java - 哪个先执行,父构造函数还是子构造函数?

标签 java inheritance constructor

我已经将这段代码放入编译器

package com.employer.constractor;

public class ConstractorDemo extends A{
    public ConstractorDemo(){
        System.out.print("Demo");
    }
    public static void main(String[] args){
        new ConstractorDemo();
    }
}

class A {
    A(){
        System.out.print("A");
    }
}

它给出了“ADemo” 为什么? 对于这种情况,我将不胜感激 并提及编译器将如何处理它

最佳答案

基类的构造函数(在您的例子中是 A 类)总是在您正在实例化的类的构造函数之前执行(在您的例子中是类 ConstractorDemo)。这就是 ADemo 之前打印的原因。

这个构造函数:

public ConstractorDemo(){
    System.out.print("Demo");
}

相当于:

public ConstractorDemo(){
    super (); // prints A
    System.out.print("Demo"); // prints Demo
}

关于java - 哪个先执行,父构造函数还是子构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34491335/

相关文章:

r - 为什么 S4 继承在环境之间丢失?

php - 通过继承的 Laravel 公共(public)服务

javascript - 冗余和继承?

ruby - 在类构造函数中有参数是否可以接受?

java - 定义中的初始化与构造函数中的初始化

java - GWT 中的双括号有多有害?

java - 如何使用xy坐标从SQLite数据库获取数据?

javascript - backbone.js 重写构造函数

java - Hibernate3-Maven-Plugin 排除生成的文件

java - Java中集合类的继承与封装