java - 为什么要执行父类的init block ?

标签 java

据我所知,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/

相关文章:

java - 在循环中创建最终变量

java - 在整个测试套件中加载一次 bean

java - Volley 没有收到 http 响应,但 postman 收到了

java - 通过Java代码在jasper Report中类别轴标签表达式对齐

java - JPA树[/Hibernate]

java - 在 Struts2 中结合 Validate Method 和 xml 验证

java - 模拟使用外部类的方法,mockito

java - 如何在Linux中的高dpi显示器上修复基于Java的应用程序的缩放?

java - 如何添加奖金?

java - 如何在 J2ME 中进行 Base64 解码(库)?