据我所知,init block 是一个在任何构造函数用于创建对象时在该构造函数之前执行的 block 。但是为什么这里的规则相矛盾...
class SuperClass
{
SuperClass()
{
System.out.println("Super Class constructor");
}
{
System.out.println("Init block of super class");
}
}
class Child extends SuperClass
{
Child()
{
super();
System.out.println("Child Class constructor");
}
public static void main(String s[])
{
Child c1=new Child();
}
}
这里,既然只形成了子类对象,为什么还要调用父类的init block 呢?
最佳答案
Child
依赖于父类 SuperClass
。它从父级获取/继承属性。因此,要构造子对象,必须首先构造父对象。这就是调用 SuperClass
的 init block 和构造函数的原因。
关于java - 为什么要执行父类的init block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33410367/