美文网首页
类的构造器的调用顺序

类的构造器的调用顺序

作者: kangkaii | 来源:发表于2017-12-04 17:09 被阅读2次

规则如下:
对于一个复杂的对象,构建器的调用遵照下面的顺序:
(1) 调用父类构建器。这个步骤会不断重复下去,首先得到构建的是分级结构的根部,然后是下一个子类,等等。直到抵达最深一层的子类。
(2) 按声明顺序调用成员初始化模块。
(3) 调用子类构建器的主体。


代码如下:

class Meal {
    Meal() { System.out.println("Meal()"); }
}
class Bread {
    Bread() { System.out.println("Bread()"); }
}
class Cheese {
    Cheese() { System.out.println("Cheese()"); }
}
class Lettuce {
    Lettuce() { System.out.println("Lettuce()"); }
}
class Lunch extends Meal {
    Lunch() { System.out.println("Lunch()");}
}
class PortableLunch extends Lunch {
    PortableLunch() {
        System.out.println("PortableLunch()");
    }
}
class Sandwich extends PortableLunch {
    Bread  b = new Bread();

    Cheese c = new Cheese();

    Sandwich() {
        System.out.println("Sandwich()");
    }
    Lettuce l = new Lettuce();
    public static void main(String[] args) {
        new Sandwich();
    }
}

注:Lettuce l = new Lettuce();即使在子类的构造方法下方,但应注意 先初始化所有的成员。


文章参考:java编程思想,198-199;

相关文章

  • 类的构造器的调用顺序

    规则如下:对于一个复杂的对象,构建器的调用遵照下面的顺序:(1) 调用父类构建器。这个步骤会不断重复下去,首先得到...

  • C++构造函数、析构函数执行顺序详解

    构造函数执行顺序 调用虚基类构造函数(如有多个则按虚基类声明顺序从左到右) 调用基类构造函数(如有多个则按基类声明...

  • C++中对象构造顺序

    单个对象的构造与析构 单个对象创建时构造函数的调用顺序1、调用父类的构造过程2、调用成员变量的构造函数(调用顺序与...

  • 一个类的构造器不能调用这个类中的其他构造器。

    一个类的构造器不能调用这个类中的其他构造器。( 错误)this()和super()都是构造器,this()调用本类...

  • 构造方法总结二

    构造器间的调用规则 指定构造器必须调用其直接父类的"指定构造器" 便利构造器必须调用同类中的其它构造器(指定或便利...

  • 2_9.super关键字

    1.子类实例化的过程中父类的构造器先被调用,然后在调用子类的构造器 2.子类通过构造器实例化时要调用父类的默认构造...

  • java中具有继承关系的类及其对象初始化顺序

    先说结论 对于具有继承关系的类,它们的类和对象构造顺序为:父类的类构造器() -> 子类的类构造器() -> 父类...

  • C++ 构造函数的调用顺序是什么

    先调用基类构造函数 按声明顺序初始化数据成员 最后调用自己的构造函数

  • C++ 构造和析构

    构造顺序 C++构造函数按下列顺序被调用:(1)任何虚拟基类的构造函数按照它们被继承的顺序构造;(2)任何非虚拟基...

  • Java类与构造器的执行顺序与注意事项

    在Java中尽量不要在构造器里调用可能被重载的虚方法。 因为构造器的初始化顺序大概是 父类静态块---->子类静态...

网友评论

      本文标题:类的构造器的调用顺序

      本文链接:https://www.haomeiwen.com/subject/qhbxixtx.html