当我创建子类对象时,它如何调用抽象类构造函数?

时间:2016-12-30 07:26:08

标签: java

// how is it call abstract class constructor when i create subclass object ?
abstract class D {
    D() {
        System.out.println("called abstract class D constructor");//print
    }
}
public class DemoAbs extends D {
    DemoAbs() {
        System.out.println("called DemoAbs class constructor");
    }
    // how is it call abstract class constructor when i create subclass object ?
    public static void main(String[] args) {
        DemoAbs d=new DemoAbs();
    }
}

3 个答案:

答案 0 :(得分:2)

它被称为构造函数链接:

构造函数中的第一行是super(),除非您明确调用this()this(<with args>)super(<with args>)

你应该通过:

Constructor Chaining in Java

Java Constructor Chaining

答案 1 :(得分:0)

每当调用构造函数时,它首先调用super(),这意味着调用超类的构造函数来初始化超类中的所有变量,之后执行子类的其余构造函数。 / p>

答案 2 :(得分:0)

每当您创建子类的对象时,子类的构造函数将使用super()隐式调用超类构造函数。如果你的父类构造函数接受参数,那么显式地需要调用super(params ...); 否则它将显示编译错误。