Java中的繼承

  1. 使用關鍵字extends,子類繼承父類,或者父類全部方法和屬性。
  2. Java中的類只能有一個直接父類,即單繼承。如果定義一個Java類,並未明確指出它的父類,則它的父類默認的是java.lang.Object類。
  3. 如果父類的某個方法不能滿足子類的需求,則可以重寫父類的方法。重寫父類方法需要遵循兩同兩小一大原則,“兩同”即方法名相同、形參列表相同;“兩小”指的是子類方法返回值類型應比父類方法返回值類型更小或相等,子類方法聲明拋出的異常類應比父類方法聲明拋出的異常類更小或相等;“一大”子類方法的訪問權限應比父類方法的訪問權限更大或相等。
  4. 如果需要在子類方法中調用父類被覆蓋的實例方法,可以用super關鍵字來限定方法。
  5. static關鍵字修飾的方法屬於類的,而不是屬於類的實例的,該方法的調用者可以是個類,而不能是個對象。
  6. 方法重載和方法重寫是不一樣的,即overload和override的區別。方法重寫發生在父類和子類之間,遵循“兩同兩小一大”原則;而方法重載指的是方法名相同,但形參列表不同的方法。
  7. Java的子類不能繼承父類的構造器,子類構造器調用父類構造器分爲幾種情況:(1)子類構造器可以調用父類構造器的初始化代碼,用super關鍵字來實現,在子類構造器的第一行代碼處顯式調用。(2)子類構造器執行體的第一行代碼使用this顯式調用本類中重載的構造器,執行本類中另一個構造器時便會調用父類構造器。(3)子類構造器中既沒有this也沒有super,系統將會在執行子類構造器之前隱式調用父類無參的構造器。無論上述三種方法中的哪種,系統總是先執行父類的構造器。
//Wolf.java中的代碼
public class Creature{
	public Creature(){
		System.out.println("Creature類無參的構造器");
	}
}

public class Animal extends Creature{
	public Animal(String name){
		System.out.println("Animal類帶一個參數的構造器");
	}
	
	public Animal(String name,int age){
		//使用this關鍵字來調用子類中重載的構造器
		this(name);
		System.out.println("Animal類帶兩個參數的構造器");
	}
}
public class Wolf extends Animal{
	public Wolf(){
		//顯式調用父類有兩個參數的構造器
		super("灰太狼", 3);
		System.out.println("顯式調用父類有兩個參數的構造器");
	}
}

運行結果如下:

Creature類無參的構造器
Animal類帶一個參數的構造器
Animal類帶兩個參數的構造器
顯式調用父類有兩個參數的構造器


發佈了22 篇原創文章 · 獲贊 15 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章