2

问题的简短摘要:我有一个由子类扩展的父类。

     public class Parent{

        public Parent(){
          //constructor logic
        }
     }

这个子类使用 super 调用 Parent 的构造函数:

     public class Child extends Parent{

         public Child(){
            super();
         }
     }

如果我可以在 Grandchild 类的构造函数中调用 super() 方法,我想知道是否要扩展 Child 类:

    public class Grandchild extends Child{

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

2 回答 2

6

这将调用Child类构造函数,而后者又将调用Parent类构造函数。

于 2012-06-19T13:32:45.440 回答
4

super() 在继承的上一层调用构造函数,如果存在无参数构造函数,它会被隐式调用。

对象从继承的顶层初始化,在您的情况下,它是 Object > Parent > Child > Grandchild。

文档中:

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 回答