2

質問の簡単な要約:子クラスによって拡張された親クラスがあります。

     public class Parent{

        public Parent(){
          //constructor logic
        }
     }

この子クラスは、superを使用して親のコンストラクターを呼び出します。

     public class Child extends Parent{

         public Child(){
            super();
         }
     }

孫クラスのコンストラクターでsuper()メソッドを呼び出すことができれば、Childクラスを拡張するのではないかと思っていました。

    public class Grandchild extends Child{

         public Grandchild(){
            super();
         }
    }
4

2 に答える 2

6

これにより、Childクラスコンストラクターが呼び出され、次にParentクラスコンストラクターが呼び出されます。

于 2012-06-19T13:32:45.440 に答える
4

super()は、継承の1つ上のレベルでコンストラクターを呼び出しており、引数のないコンストラクターがある場合は暗黙的に呼び出されます。

オブジェクトは、継承の最上位レベルから初期化されます。この場合は、オブジェクト>親>子>孫です。

ドキュメントから:

If a constructor does not explicitly invoke a superclass constructor, the Java compiler
automatically inserts a call to the no-argument constructor of the superclass. If the super 
class does not have a no-argument constructor, you will get a compile-time error. Object does 
have such a constructor, so if Object is the only superclass, there is no problem. 
于 2012-06-19T13:36:55.730 に答える