如何理解构造函数方法不能被继承

时间:2016-02-24 08:29:50

标签: java inheritance

我正在准备面试,而且有一个问题确实让我感到困惑。 人们说在java构造函数中不能继承,而是像这样的代码

public class childclass extends parentclass{

public childclass(){
    super();
    System.out.println("child");
}

public static void main(String[] args) {
    childclass cc = new childclass();
}}

不是super()意味着子类继承了父类的构造函数吗?

4 个答案:

答案 0 :(得分:0)

  

如果构造函数没有显式调用超类构造函数,Java编译器会自动插入对超类的无参数构造函数的调用。如果超类没有无参数构造函数,则会出现编译时错误。对象确实有这样的构造函数,因此如果Object是唯一的超类,则没有问题。

根据super docs

答案 1 :(得分:0)

构造函数不是成员,因此子类不会继承它们,但可以从子类调用超类的构造函数。

答案 2 :(得分:0)

嗯,这可能有点令人困惑。但是,您不是继承父构造函数,而是使用它。

专门的类继承父类的所有成员,但不继承构造函数,尽管专门的类必须通过publishing { publications { mavenJava(MavenPublication) { from components.java groupId project.group artifactId jar.baseName version project.version } } } 使用它。

答案 3 :(得分:0)

我想,https://stackoverflow.com/a/18147860/5964970已回答了这个问题。继承意味着子类中的方法(和构造函数)的名称与父类中的名称相同。但是子类中的构造函数名称等于子类的类名,并且不等于父类的构造函数名称。