[画工学徒--Java]组合, 持续以及多态的机关器调用次序

    添加时间:2013-8-8 点击量:

    package com.kan.thinking.demo;
    

    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 {
    private Bread b = new Bread();
    private Cheese c = new Cheese();
    private Lettuce l = new Lettuce();

    public Sandwich() {
    System.out.println(
    Sanwich());
    }
    }

    /
    @author Kan
    @verison 创建时候 : 2013-8-8 下午5:25:06
    /
    public class ConstructorInitOrderDemo {

    public static void main(String[] args) {
    new Sandwich();
    }

    }


    运行成果 : 


    Meal()
    Lunch()
    PortableLunch()
    Bread()
    Cheese()
    Lettuce
    Sanwich()





      错杂对象调用机关器要遵守的次序 : 



    • 调用基类机关器. 这个步调会络续地反复递归下去, 起首是机关这种层次布局的跟, 然后是下一层导出类, 等等, 知道最低层的导出类.

    • 按声明次序调用成员的初始化办法.

    • 调用导出类机关器的主体.



      机关动作一经产生, 那么对象所有项目组的全部成员都邑获得构建. 然而, 在机关器内部, 我们必须确保所要应用的成员都已经构建完毕. 为确保这个目标, 独一的办法就是起首调用基类机关器. 此外, 当成员对象在类内进行定义的时辰, 只要有可能, 就应当对它们进行初始化(也就是说, 经由过程组合体式格式将对象置于类内).



    读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。
    分享到: