类的初始化例子

上一篇 / 下一篇  2008-08-14 10:37:19 / 个人分类:java

//: c06:Beetle.java

// The full process of initialization.

 

class Insect {

    private int i = 9;

 

    protected int j;

 

    Insect() {

       System.out.println("i = " + i + ", j = " + j);

       j = 39;

    }

   

    static{

       System.out.println("static block1");

    }

    private static int x1 = print("static Insect.x1 initialized");

   

 

   

    static int print(String s) {

       System.out.println(s);

       return 47;

    }

}

 

public class Beetle extends Insect {

    private int k = print("Beetle.k initialized");

 

    public Beetle() {

       System.out.println("k = " + k);

       System.out.println("j = " + j);

    }

 

    private static int x2 = print("static Beetle.x2 initialized");

 

    public static void main(String[] args) {

       System.out.println("Beetle constructor");

       Beetle b = new Beetle();

      

    }

   

/* 

结果

static block1
static Insect.x1 initialized
static Beetle.x2 initialized
Beetle constructor
i = 9, j = 0
Beetle.k initialized
k = 47
j = 39

 

 

当你用Java 运行Beetle 的时候,第一件事就是访问了

 *  Beetel.main( )(这是一个static 方法),于是装载器(loader)就会为Beetle ( Beetle.class )

    你寻找经编译的Beetle 类的代码(也就是Beetle.class 文件)。在装载

    的过程中,装载器注意到它有一个基类(也就是extends 所要表示的意

    ),于是它再装载基类。不管你创不创建基类对象,这个过程总会发

    生。(试试看,把创建对象的那句注释掉,看看会有什么结果。)

    如果基类还有基类,那么这第二个基类也会被装载,以此类推。

    下一步,

    它会执行根基类(root base class)”(这里就是Insect)static

    始化,然后是下一个派生类的static 初始化,以此类推。这个顺序非常

    重要,因为派生类的静态初始化(即前面讲的static 初始化)”有可能

    要依赖基类成员的正确初始化。

    现在所有必要的类都已经装载结束,可以创建对象了。首先,对象里的所

    有的primitive 都会被设成它们的缺省值,而refer**e 也会被设成null——这个过程是一瞬间完成的,对象的内存会被统一地设置成两进

    制的零(binary zero)”。然后调用基类的构造函数。调用是自动发生

    的,但是你可以使用super 来指定调用哪个构造函数(也就是Beetle( )

    构造函数所做的第一件事)。基类的构造过程以及构造顺序,同派生类的

    相同。基类构造函数运行完毕之后,会按照各个变量的字面顺序进行初始

    化。最后会执行构造函数的其余部分。*/

   

} ///:~

 


TAG:

geven的个人空间 引用 删除 geven   /   2008-08-19 11:46:05
呵呵  谢谢光临,我也是刚接触 ,一些学习笔记
rene的个人空间 引用 删除 rene   /   2008-08-14 11:16:00
看不懂,还是支持一下
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2009-01-08  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 503
  • 日志数: 42
  • 建立时间: 2008-07-24
  • 更新时间: 2008-12-30

RSS订阅

Open Toolbar