我是一名试图理解 Java 中的继承的本科生。docs.oracle 网站说一个类的所有成员都是继承的,除了构造函数。这是有道理的。问题是我做了一个实验,但没有奏效。这里是:
public class One{
public void outPrint(){
System.out.println("Hello World!");
}//end outPrint
}//end One.java
public class Two extends One{
//empty
}//end Two.java
public class Three extends Two{
public static void main(String[]args){
outPrint();
}//end main
}//end Three.java
当我运行三时,我得到:无法从静态上下文引用非静态方法 outPrint()。这当然是因为编译器将 outPrint() 视为实例成员。如果我将关键字“static”添加到 outPrint() 方法标头,那么整个事情就可以正常工作。
这就是我的困惑所在。似乎不仅仅是不可继承的构造函数,还有它的所有实例成员。谁能更好地向我解释一下?是否有不涉及使用“静态”的解决方法?我尝试了一些“超级”实验,但无济于事。提前致谢!