建構函式

2020-08-12 22:09:01

構造器的名字必須和類名相同,而匿名內部類沒有類名,所有不可以有構造器

1 構造方法不能用物件呼叫;A:構造方法概述和作用,給物件的數據(屬性)進行初始化 B:構造方法格式特點a:方法名與類名相同(大小也要與類名一致)
b:沒有返回值型別,連void都沒有
c:沒有具體的返回值return;-----過載:方法名相同,與返回值型別無關(構造方法沒有返回值),只看參數列表,系統預設創造一個無參數的,我們建立系統就不提供了!

1 可以過載,和類名相同,this()纔是呼叫建構函式的第一條語句,this是不需要的,this()和super()爲構造方法,作用是在jvm構建一個物件,同一個方法只能呼叫一次!!!

2 java沒有靜態的建構函式,只有靜態初始化快,

3 構造方法不能被子類繼承,所以用final修飾沒有意義。構造方法用於建立一個新的物件,不能作爲類的靜態方法,所以用static修飾沒有意義。此外,Java語言不支援native或synchronized的構造方法。

4 this()纔是建構函式的第一個可以執行的語句,this呼叫是不必須的,注意小括號!!

5 構造方法是一種特殊的方法,具有以下特點。
(1)構造方法的方法名必須與類名相同–一定要與定義爲public的類同名。
(2)構造方法沒有返回型別,也不能定義爲void,在方法名前面不宣告方法型別。
(3)構造方法的主要作用是完成物件的初始化工作,它能夠把定義物件時的參數傳給物件的域。
(4)一個類可以定義多個構造方法,如果在定義類時沒有定義構造方法,則編譯系統會自動插入一個無參數的預設構造器,這個構造器不執行任何程式碼。
(5)構造方法可以過載,以參數的個數,型別,順序,但是參數列表必須不相同,不以返回值和存取級別進行區分
(6) 構造方法不能被物件呼叫,只會建立物件,使用new關鍵字
(7) 不建立,系統預設提供一個無參數的,也就是預設構造器,一旦提供,系統就不會提供啦

7 子父類別存在同名成員時,子類中預設存取子類的成員,可通過super指定存取父類別的成員,格式:super.xx (注:xx是成員名);
2.建立子類物件時,預設會呼叫父類別的無參構造方法,可通過super指定呼叫父類別其他構造方法,格式:s uper(yy) (注:yy是父類別構造方法需要傳遞的參數)

8 子類構造方法在呼叫時必須先呼叫父類別的,由於父類別沒有無參構造,必須在子類中顯式呼叫,否則異常!修改子類構造方法如下即可:
public Derived(String s){
super(「s」);
System.out.print(「D」);
}

9 識別合法的構造方法;
1:構造方法可以被過載,一個構造方法可以通過this關鍵字呼叫另一個構造方法,this語句必須位於構造方法的第一行;
過載:方法的過載(overload):過載構成的條件:方法的名稱相同,但參數型別或參數個數不同,才能 纔能構成方法的過載。
2 當一個類中沒有定義任何構造方法,Java將自動提供一個預設構造方法;
3 子類通過super關鍵字呼叫父類別的一個構造方法;
4 當子類的某個構造方法沒有通過super關鍵字呼叫父類別的構造方法,通過這個構造方法建立子類物件時,會自動先呼叫父類別的預設構造方法
5 構造方法不能被static、final、synchronized、abstract、native修飾,但可以被public、private、protected修飾;
6 構造方法不是類的成員方法;
7 構造方法不能被繼承。