1. 程式人生 > >Java 構造器Constructor 繼承

Java 構造器Constructor 繼承

Java預設構造方法

構造方法作用:初始化所定義的類的物件和屬性。

構造方法沒有返回型別

 

 

 

2 繼承中的構造器

子類是不繼承父類的構造器(構造方法或者建構函式)的,它只是呼叫(隱式或顯式)

如果父類的構造器帶有引數,則必須在子類的構造器中顯式地通過 super 關鍵字呼叫父類的構造器並配以適當的引數列表。

如果父類構造器沒有引數,則在子類的構造器中不需要使用 super 關鍵字呼叫父類構造器,系統會自動呼叫父類的無參構造器。

/*  Code   */

class
SuperClass {
private int n; SuperClass(){ //父類的第一種構造方法,不帶參 System.out.println("SuperClass()"); } SuperClass(int n) { //父類的第二種構造方法,帶參 System.out.println("SuperClass(int n)"); this.n = n; } } class SubClass extends SuperClass{ private int n; SubClass(){ //子類的第一種構造方法,不帶參 super(300); System.out.println(
"SubClass"); } public SubClass(int n){ //子類的第二種構造方法,帶參 System.out.println("SubClass(int n):"+n); this.n = n; } } public class TestSuperSub{ public static void main (String args[]){ SubClass sc = new SubClass(); //物件sc沒有引數,所以選擇子類第一種構造方法。由於子類必須先呼叫父類的構造方法,且又顯示的(用關鍵字super)呼叫了父類的第二種構造方法 SubClass sc2
= new SubClass(200); //物件sc2有引數,所以選擇子類第二種構造方法。因為沒有顯示的呼叫父類的構造方法,所以系統隱式的呼叫父類無參構造方法 } }
/*output*/
SuperClass(int n) SubClass SuperClass() SubClass(int n):200

解析:子類和父類都有多個構造方法,目的是根據物件中傳入的引數型別自動選擇該用的構造器。