1、類的成員:
結果為:public
class
testblock
}class
myclass
}
這是非靜態**塊
無參構造
在每次建立物件時都執行
結果為:public
class
testblock
}class
myclass
public
myclass
(string str)
}
這是非靜態**塊
無參構造
這是非靜態**塊
有參構造
3、例項初始化過程:建立物件時,為物件進行初始化的操作
結果為:public
class
testblock
}class
demo
private string str=
assign()
;public
demo()
public
demo
(string str)
public string assign()
}
這是非靜態**塊1
assign方法
這是非靜態**塊2
無參構造
這是非靜態**塊1
assign方法
這是非靜態**塊2
有參構造
構造器練習01
練習02public
class
testinit
}class
father
}class
sonextends
father
public
son(string str)
public
son(string str,
int num)
}
結果為:/*
* 先執行父類的例項初始化方法
*/public
class
testinnit2
}class
fupublicfu(
)}class
ziextends
fupubliczi(
)}
1、父類的非靜態**塊
2、這是父類的無參構造
3、子類的非靜態態**塊
4、這是子類的無參構造
練習03
結果為:public
class
testinnit2
}class
fupublicfu(
)public string assignfu()
}class
ziextends
fupubliczi(
)public string assignzi()
}
3、父類的assign方法
1、父類的非靜態**塊
2、這是父類的無參構造
6、子類的assign方法
4、子類的非靜態態**塊
5、這是子類的無參構造
(若子類和父類的方法名相同,則輸出的都是子類的assign方法)
在init中隱含了str=this.assign(),在構造器中,在例項初始化方法中代表的是正在建立的物件,現在建立的是子類的物件,因為子類重寫了assign方法,那麼執行的是子類重寫的assign方法
類的初始化
分析:package demo;
/* * (1)類的初始化
* ()
* * (2)執行main方法
* system.out.println("x="+x); //靜態變數 x=-1
* z--; //靜態變數 z=-1
* method();
* y=z++ + ++z; //靜態變數 z++=-1 z=0,++z=1 z=1 y=-1+1=0
* system.out.println("result:"+(z+y+ ++z)); //靜態變數 z=1,y=0,++z=2 z=2 ->result=3
*/public
class
test07
static
public
static
void
main
(string[
] args)
public
static
void
method()
}
(1)類的初始化 */
結果為:
x=-1
result:=3
例項初始化
1、子類重寫父類的方法
分析:package demo;
/* * 例項初始化
*1、 base b1 = new base(); //父類的例項初始化,與子類無關
* ()
* 2、base b2 = new sub();
* (1)父類的例項初始化
* ()
* (1)子類的例項初始化
* ()
*/public
class
test08
}class
base
public
void
method
(int i)
}class
subextends
base
public
void
method
(int j)
}
例項初始化
*1、 base b1 = new base(); //父類的例項初始化,與子類無關
結果為:
base:100
sub:100
base:70
若子類沒有重寫父類的方法,則結果為:
base:100
base:100
base:70
結果為:132package demo;
/* * 例項初始化的過程:
* (1)父類的例項初始化
* ()
* (1)子類的例項初始化
* (string name)
*
* }*/public
class
test09
}class
people
public
people
(string name)
}class
child
extends
people
public
child()
}
結果為:bapackage demo;
/* * new a(new b());
* (1)new b()
* ()
* * (2)new a(b的物件)
* (b b)
*/public
class
test10
}class
apublic
a(b b)
}class
b}
ab
類初始化和例項初始化
乙個類要建立例項需要先載入並初始化該類 main方法所在的類需要先載入和初始化 乙個子類要初始化需要先初始化父類 乙個類初始化就是執行clinit 方法 clinit 方法由靜態類變數顯式賦值 和靜態 塊組成 類變數顯式賦值 和靜態 塊 從上到下順序執行 clinit 方法只執行一次 父類的初始化 ...
類初始化和例項初始化
father public class father father public inttest public static intmethod son public class sonextends father son public inttest public static intmethod...
初始化類物件
初始化類物件 趙湘寧問題 c 中如何初始化類中的表資料?在c語言中,我能像下面這樣初始化結構陣列 struct mystruct mystruct table etc 但是如果mystruct是個c 類,而不是結構,我編譯就會出錯。我覺得這是c 的乙個不足。解答 這個問題完全取決於你如何看待c c ...