構造方法是定義在java類中的一個用來初始化對象的函數,其方法名和類名相同,但是通常不顯示地它,在創建類的一個實例時,構造方法就像一個方法一樣被調用,因爲從來不顯示地調用它,所以無法訪問其返回值,即構造函數不返回值。
構造方法的小例子:
Public class person{
Int id ;
Int age;
Person(int n, int i){
Id = n;
Age = I;
}
}
我們從上面的說明中,可以看出構造方法和方法是有區別的,主要表現在一下方面:
1、 修飾符:構造方法像普通方法一樣,可以有任何的訪問修飾符public、protected、private,但是不能有abstract、final、static等非訪問修飾符;
2、 返回值:構造方法沒有返回值,void也不行;
3、 命名:構造方法和類具有相同的名字,而類最好不要。
4、 編寫:構造方法可以自己編寫也可以系統默認,顯然普通方法只能自己編寫;
5、 調用:在創建對象或是調用靜態成員變量時,首先會調用構造方法,是系統自動調用,而普通的方法只能實例化完對象,才能用對象調用。
上面只是簡單的對比了一下構造方法和普通方法,下面我們在具體看一下。
(1) this用法:
對於方法引用this指向正在執行方法的類的實例;靜態方法不能使用this關鍵字;構造方法指向這個對象的另一個構造方法,示例如下:
Public class Person{
String name;
int age;
String sex;
Person (string n, int g , string s){
name = n;
age = g;
sex = s;
}
Person ( string n ,I nt g){
This(n,g,”男”)
}
Public Static void main(String args[] ){
Person p1 = new Person(“hua”,20,”女”);
Person p2 =new Person(“yang”,20);
System.out.println(p1.name +”,” +p1.age +”,”+ p1.sex);
System.out.println(p2.name +”,” +p2.age +”,”+ p2.sex);
}
}
運行結果如下:
分析上面的代碼得出,Person類中的第二個構造方法調用了第一個構造方法。
注意:在構造方法中只能調用一次其他的構造方法,並且並且調用構造方法的語句必須是第一條語句,否則編譯錯誤。
(2) 繼承中構造方法:
構造方法和普通方法,都用關鍵字super指向超類,但是使用方法不同。
1) 普通方法:執行被重載的超類中的方法,代碼如下:
Class Person{
Public void eat(){
System.out.print(“想要吃好吃的”);
}
}
Class Woman{
Public void eat(){
super.eat();
System.out.print(“不行,還是減肥吧”);
}
}
2) 構造方法:調用超類中的構造方法,且必須放在第一行,否則出錯,代碼如下:
Class Person{
Person(){ }
}
Class Woman{
Woman(){
Super();
}
}
注意:如果子類構造方法中既沒有顯示調用積累構造方法,而基類中又沒有午餐的構造方法,則編譯後出錯。
這裏還有一點是需要大家注意的,在包含構造方法的初始化順序如下:
1.主類的靜態成員首先初始化;
2.主類的超類的構造方法按照從最高到最低的順序被調用;
3.主類的非靜態對象(變量)初始化;
4.調用主類的構造方法;
總之,構造方法並不難理解,但是在我們應用的過程中要細心,這樣纔不會出錯。