我想知道为什么我的子类没有正确继承。
如果我有......
public class ArithmeticOp{
//some constructor
public static void printMessage(){
System.out.println("hello");
}
}
和另一个班级
public class AddOp extends ArithmeticOp{
//some constructor
ArithmeticOp op = new ArithmeticOp();
op.printMessage(); //returns error
}
我的eclipse不断返回“令牌上的语法错误”printMessage“,此标记后的标识符”
有人可以帮忙吗?谢谢!还有其他方法从父类调用子类以及从子类调用方法吗?谢谢你!答案 0 :(得分:3)
这是因为你不能将任意代码放入类体:
public class AddOp extends ArithmeticOp{
ArithmeticOp op = new ArithmeticOp(); // this is OK, it's a field declaration
op.printMessage(); // this is not OK, it's a statement
}
op.printMessage();
需要位于方法内部或初始化程序块内。
除此之外,您的代码感觉不对。为什么要在其自己的子类中实例化<{1}} ?
答案 1 :(得分:0)
这是因为该方法被声明为静态。我可能弄错了,我相信如果我有人会发表评论,但我认为你可以这样做:
public class AddOp extends ArithmeticOp{
//some constructor
ArithmeticOp op = new ArithmeticOp();
super.printMessage(); //super should call the static method on the parent class
}
或者
public class AddOp extends ArithmeticOp{
//some constructor
ArithmeticOp op = new ArithmeticOp();
ArithmeticOp.printMessage(); //Use the base class name
}