構造函數
構造函數是什麼?
在堆內存中創建對象的時候對象均需要初始化初始化的動作就有構造函數來實現事實上每個類在創建對象且初始化的時候均調用了一個隱式構造函數 用戶在程序若重寫聲明構造函數則是顯式構造函數JVM在執行的時候則以用戶定義的構造函數為主
構造函數特點:
<>函數名必須與類名保持一致
<>沒有類型定義即是沒有voidintString類類型等等數據類型的修飾
<>不可存在return語句
<>可以通過方法重載的方式來區別不同對象的初始化方式
比如Person類對象的初始化就如剛剛誕生的嬰兒那般有的嬰兒出生前還沒有取好名字但出生後稱了體重;有的出生前已經取好了名字且出生後也稱了體重但是不管怎麼樣嬰兒都是哭著來到這個世界的所以都共同擁有一個方法cry()
class Person{
private String name; //姓名
private int weight; //出生體重
private int order; //編號
//不取名字 也不稱重
Person(){
System
out
println(
Order:
+ order +
do nothing!
);
cry();
}
//取好名字未稱體重
Person(int order
String name){
System
out
println(
Order:
+ order +
Name is:
+ name);
cry();
}
//未取名字
但稱體重
Person(int order
int weight){
System
out
println(
Order:
+ order +
Weight is:
+ weight+
Kg
);
cry();
}
//取了名字
稱了體重
Person(int order
String name
int weight){
System
out
println(
Order:
+ order +
Name is:
+ name +
Weight is :
+ weight +
Kg
);
cry();
}
//但是都是哭著來的
void cry(){
System
out
println(
Crying when birth!
);
}
public static void main(String[] args){
Person child
= new Person();
System
out
println(
華麗的分割線
);
Person child
= new Person(
Smith
);
System
out
println(
華麗的分割線
);
Person child
= new Person(
);
System
out
println(
華麗的分割線
);
Person child
= new Person(
John
);
}
}
/*運行結果如下:
Order:
do nothing!
Crying when birth!
華麗的分割線
Order:
Name is: Smith
Crying when birth!
華麗的分割線
Order:
Weight is:
Kg
Crying when birth!
華麗的分割線
Order:
Name is: John
Weight is :
Kg
Crying when birth!
*/
上面的代碼描述了構造函數的基本特點一個空參數的構造函數和三個帶有不同參數變量的構造函數在實例化對象的時候便有了不同的實現方式
構造函數出現的時機:
在定義類的時候分析現實世界中具體事物的時候若該事物存在或者具備一些特性或者行為那就將這些內容定義到構造函數中如例子中的嬰兒具有的特性就是體重等一些生理指標和名字標示符行為動作就是出生後先哭
構造代碼塊
是將重載的構造函數中所具有的共同的功能或者特性再次抽取出來放在一起執行
格式在程序中寫一對大括號 { } 即可與構造函數具有同樣的域范圍即可然後將共有的特性抽取到括號內比如cry(); 注下面程序中紅色部分
並且是先於構造函數執行的 可以參考下面代碼執行的結果
如下面的代碼
class Person{
private String name; //姓名
private int weight; //出生體重
private int order; //編號
//構造代碼塊
{
cry();
}
//不取名字 也不稱重
Person(){
System
out
println(
Order:
+ order +
do nothing!
);
}
//取好名字未稱體重
Person(int order
String name){
System
out
println(
Order:
+ order +
Name is:
+ name);
}
//未取名字
但稱體重
Person(int order
int weight){
System
out
println(
Order:
+ order +
Weight is:
+ weight+
Kg
);
}
//取了名字
稱了體重
Person(int order
String name
int weight){
System
out
println(
Order:
+ order +
Name is:
+ name +
Weight is :
+ weight +
Kg
);
}
//但是都是哭著來的
void cry(){
System
out
println(
Crying when birth!
);
}
public static void main(String[] args){
Person child
= new Person();
System
out
println(
華麗的分割線
);
Person child
= new Person(
Smith
);
System
out
println(
華麗的分割線
);
Person child
= new Person(
);
System
out
println(
華麗的分割線
);
Person child
= new Person(
John
);
}
}
/*執行結果如下:
Crying when birth!
Order:
do nothing!
華麗的分割線
Crying when birth!
Order:
Name is: Smith
華麗的分割線
Crying when birth!
Order:
Weight is:
Kg
華麗的分割線
Crying when birth!
Order:
Name is: John
Weight is :
Kg
*/
以上就是構造函數最基本的應用了當然構造函數在子類繼承父類的時候還有要注意的地方和細節會在記錄繼承特性的時候補充還望指正
From:http://tw.wingwit.com/Article/program/Java/hx/201311/27044.html