Java 从父类继承不起作用的方法
我想知道为什么我的子类不能正确继承 如果我有Java 从父类继承不起作用的方法,java,inheritance,static-methods,method-call,Java,Inheritance,Static Methods,Method Call,我想知道为什么我的子类不能正确继承 如果我有 public class ArithmeticOp{ //some constructor public static void printMessage(){ System.out.println("hello"); } } 还有一节课 public class AddOp extends ArithmeticOp{ //some constructor ArithmeticOp
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
}
my eclipse不断返回“令牌“printMessage”上的语法错误,该令牌后面应该是标识符”
有人能帮忙吗?谢谢还有其他方法可以从父类以及子类调用方法吗?非常感谢 这是因为该方法被声明为静态的。我可能错了,如果我错了,我相信会有人评论,但我认为你可以做到:
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();
super.printMessage(); //super should call the static method on the parent class
}
或
这是因为您不能将任意代码放入类主体中:
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()代码>需要位于方法内部或初始值设定项块内部
除此之外,您的代码感觉是错误的。为什么要在自己的子类中实例化一个算术运算
这是因为您不能将任意代码放入类主体中:
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()代码>需要位于方法内部或初始值设定项块内部
除此之外,您的代码感觉是错误的。为什么要在自己的子类中实例化一个算术运算
你的代码片段准确吗?我以为你会做算术运算op=newaddop();无论哪种方式,静态方法总是属于类,而不是对象。因此,继承不适用于静态。我认为您应该删除static关键字并使用OOP。调用静态方法时,通常最好总是调用类,例如ArithmeticOp.printMessage(),而不是调用实例,例如op.printMessage();你的代码片段准确吗?我以为你会做算术运算op=newaddop();无论哪种方式,静态方法总是属于类,而不是对象。因此,继承不适用于静态。我认为您应该删除static关键字并使用OOP。调用静态方法时,通常最好总是调用类,例如ArithmeticOp.printMessage(),而不是调用实例,例如op.printMessage();哦,这比我想象的更基本1用于完全读取编译器错误@琼斯:我也看不到它,我必须点燃日食来发现它:)哦,这比我想象的更基本1用于完全读取编译器错误@琼斯:我也看不到它,我不得不点燃月食来发现它:)不过谢谢你的帮助!它只需要位于函数内部,也可以调用该语句。谢谢您的帮助!它只需要位于函数内部,也可以调用该语句