Java对象的初始化过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java对象的初始化过程相关的知识,希望对你有一定的参考价值。

Java对象的初始化步骤如下:

1.首先将分配给对象的存储空间初始化为二进制的零;

2.如果有继承,则先调用基类的构造器;

3.按照声明的顺序调用成员的初始化方法;

4.调用导出类的构造器主体.

看下面的例子:

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);
    }
}

输出结果:

技术分享

结果分析:

1).导出类RoundGlyph覆盖了基类Glyph中的draw()方法.当基类Glyph构造器调用draw方法时,实际会调用RoundGlyph的draw()方法;

2).由于对象初始化时,首先将分配给对象的存储空间初始化为二进制的零,因此此时radius的值为0.

结论:

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

2).在构造器内唯一能安全调用的那些方法是基类中的final方法(也适用于private方法,它们自动属于final方法).这些方法不能被覆盖,因此也就不会出现上述令人惊讶的问题.

以上是关于Java对象的初始化过程的主要内容,如果未能解决你的问题,请参考以下文章

java创建对象的初始化过程

java对象的初始化过程和创建对象的几种方式

Java类与对象初始化的过程(一道经典的面试题)

java基础_对象初始化过程

Java面向对象(OOP)--static修饰符(static变量static方法代码块和静态代码块创建和初始化对象的过程静态导入)

解析Java类和对象的初始化过程