Java的構造器

2021-07-09 22:56:34 字數 1562 閱讀 5624

我們宣告物件賦值是這樣的 dog mydog = new dog() 

看上去是在呼叫dog這個方法 其實我們是在呼叫dog的建構函式

建構函式並不是方法,它帶有new的時候會執行的程式**,這段程式**會在你初始乙個物件時候執行

唯一能呼叫建構函式的辦法就是新建乙個類

無參建構函式

public dog()

看到它與方法的不同了麼?它沒有返回型別,並且名稱與類的名稱要相同

建構函式有乙個關鍵特徵是它會在物件能夠被賦值給引用之前就執行,這就代表可以有機會在物件使用前介入

public class practice 

}class dog

}

建構函式就可以讓我們有機會介入new的過程

建構函式的過載

如果類有乙個以上的建構函式,則引數一定要不一樣,這包括了引數的順序與型別而不是引數的名字。

你使用int 型和double型的引數順序 與 double型和int型的引數順序是不同的

public class mushroom()

public mushroom(){}

public mushroom(boolean ismagic){}

public mushroom(boolean ismagic, int size){}

public mushroom(int size, boolean ismagic){}

}

到這個地方就該寫父類了,假如說父類是抽象的也可以有建構函式麼?

是可以的,雖然你不能對抽象的類執行new操作,但抽象的類還是父類,因此它的建構函式會在具體子類建立出例項時執行

父類的建構函式需要執行,完整的物件需要也是完整的父類核心,所以這就是為什麼父類建構函式必須執行的原因

子類呼叫父類的建構函式,應該用super(),並且super()必須放在第一句

public boop(int i)

假如這麼用super

public boop(int i)

這樣編譯器就不允許通過了

還有你沒有自己加上super(),編譯器會自己給子類建構函式加上super();

但編譯器幫忙加的一定是沒有引數的版本,要是父類有多個過載版本,也只有無引數的這個版本會被呼叫

你要從某個構造函式呼叫過載版的另乙個建構函式 就要用this() 但是要記住super和this不能同時呼叫,因為這兩個都要放在第一行語句

public class practice 

}class animal

public animal(int myage)

}class dog extends animal

}

java構造器 筆記

基類的構造器總是在匯出類的構造過程中被呼叫,而且按照繼承層次逐層向上鏈結,使每個基類構造器得到呼叫。這樣做是有意義的,因為 構造器具有一項特殊任務 檢查物件是否被正確地構造 匯出類只能訪問它自己的成員,不能訪問基類中的成員 基類成員通常是private型別 只有基類構造器才有恰當的權利來對自己的成員...

java類 構造器

類的第三個成員構造器 constructor 構造器的作用 1.建立物件 設計類時,若不顯示宣告型別的構造器話,程式會預設提供乙個空參的構造器。一旦定義類的構造器,預設的構造器就不再提供。如何宣告類的構造器。格式 許可權修飾符 類名 形參 類的多個構造器之間 構成過載 public class te...

java構造器詳解

抽象類是有預設構造方法的 普通類構造方法之間的呼叫可以使用 this 來完成。而且必須放在第一句話執行,前面不能有任何其它 呼叫父類構造器使用 super 來完成,而且必須放在第一句話執行,前面不能有任何其它 this代表當前類,靜態塊 靜態方法中不能使用this關鍵字。super代表父類的,顯式呼...