私は大学生で、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
Three を実行すると、非静的メソッド outPrint() は静的コンテキストから参照できません。これはもちろん、コンパイラが outPrint() をインスタンス メンバーとして認識しているためです。キーワード「static」を outPrint() メソッド ヘッダーに追加すると、すべてが正常に機能します。
これが私の混乱の原因です。継承できないコンストラクターだけでなく、そのすべてのインスタンスメンバーもそうです。誰かが私にこれをもう少しうまく説明できますか? 「静的」の使用を伴わない回避策はありますか? 「スーパー」でいくつかの実験を試みましたが、役に立ちませんでした。前もって感謝します!