美文网首页
初始化顺序

初始化顺序

作者: 筑梦丶 | 来源:发表于2018-10-08 18:54 被阅读0次
    class Glyph {
        void draw() { System.out.println("Glyph.draw()"); }
        Glyph() {
            System.out.println("Glyph() before draw()");
            draw();
            System.out.println("Glyph() after draw()");
        }
    }
    
    class RoundGlyph extends Glyph {
        private int radius = 1;
        RoundGlyph(int r) {
            radius = r;
            System.out.println("RoundGlyph.RoundGlyph(), radius = " + radius);
        }
        void draw() {
            System.out.println("RoundGlyph.draw(), radius = " + radius);
        }
    }
    
    public class PolyConstructors {
        public static void main(String[] args) {
            new RoundGlyph(5);
        }
    } /* Output:
    Glyph() before draw()
    RoundGlyph.draw(), radius = 0
    Glyph() after draw()
    RoundGlyph.RoundGlyph(), radius = 5
    *///:~
    
    初始化的实际过程是:

    1.在其他任何事物发生之前,将分配给对象的储存空间初始化成二进制的零。
    2.调用基类构造器,此时,调用被覆盖的方法(在调用子类构造器之前调用)。
    3.按照声明的顺序调用成员的初始化方法。
    4.调用导出类的构造器主体。

    编写构造器时有一条准则:用尽可能简单的方法使对象进入正常状态;如果可以的话,避免调用其他方法。

    相关文章

      网友评论

          本文标题:初始化顺序

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