作者eala (bucket list)
看板java
标题[问题] 关於物件初始化顺序 static与 non-static
时间Thu Nov 3 15:22:35 2011
小弟最近在 K "Thinking in JAVA 4/e中文版"这本书
里面第 157页, 有个地方一直不太理解, 希望高手能帮忙解答
class Bowl{
Bowl(int marker){
System.out.println("Bowl(" + marker + ")");
}
void f1(int marker){
System.out.println("f1(" + marker + ")");
}
}
class Table{
static Bowl bowl1=new Bowl(1);
Table(){
System.out.println("Table()");
bowl2.f1(1);
}
void f2(int marker){
System.out.println("f2(" + marker + ")");
}
static Bowl bowl2=new Bowl(2);
Cupboard test=new Cupboard();
}
class Cupboard{
Bowl bowl3=new Bowl(3);
static Bowl bowl4=new Bowl(4);
Cupboard(){
System.out.println("Cupboard()");
bowl4.f1(2);
}
void f3(int marker){
System.out.println("f3(" + marker + ")");
}
static Bowl bowl5=new Bowl(5);
}
public class StaticInitialization{
public static void main(String[] args){
System.out.println("Creating new Cupboard() in main");
new Cupboard();
System.out.println("Creating new Cupboard() in main");
new Cupboard();
table.f2(1);
cupboard.f3(1);
}
static Table table = new Table();
static Cupboard cupboard = new Cupboard();
}
後面附了说明
"Bowl 让你得以观看 class的诞生过程, Table和 Cupboard会在它们自身的 class
定义式中产生 Bowl static 成员. 请记住, Cupboard会在 static定义之前先产生
non-static Bowl bowl3."
这段是什麽意思? 因为我怎麽试都试不出
Bowl(3)
Bowl(4)
Bowl(5)
的顺序
先谢过~
感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.71.19
1F:→ lingerkptor:这是在教初始化的顺序,建议你把code先拿去编译并执行 11/03 16:25
2F:→ lingerkptor:看印出的结果再来对照,再来了解那些部分先初始化。 11/03 16:27
3F:→ lingerkptor:文义修正=> 之後 11/03 16:30
4F:推 PsMonkey:利用版面资源,然後说相当欢迎站内信讨论,这是什麽心态 11/03 16:35
5F:→ eala:感谢回覆, 有跑出结果, 就是 Bowl(4) Bowl(5) Bowl(3)的顺序 11/03 17:11
6F:→ eala:主要附的说明看不懂, 程式结果感觉是 static优於 non-static 11/03 17:14
7F:→ eala:版大不好意思~更正~ 11/03 17:17
※ 编辑: eala 来自: 140.114.71.19 (11/03 17:17)