JAVA基礎—04.面向對象&繼承

愛轉圈筆記

勤思、體悟、總結、分享

面向對象——繼承

繼承

什麼是繼承?

一個對象可以使用另一個對象非私有的屬性和方法,Java中所有的類都默認直接或間接的繼承了Object類。(子類繼承父類)


繼承的作用

1. 描述類之間的關係

2. 實現代碼複用

3. 實現多態的基礎


繼承的實現

abstract 關鍵字
 包含了抽象方法的類一定是抽象類。
 只定義方法,無具體實現代碼。例如 public abstract void run();
 抽象方法必須被子類實現。
 抽象類不能實例化。
 抽象類只能用來繼承。
 抽象方法的意義:將方法的設計和實現分離。
  • 聲明父類:父類一般由abstract修飾,無法實例化;
  • 子類通過extends關鍵字繼承父類
  • 聲明子類:子類中聲明獨有的屬性和方法即可,或者重寫父類的abstract方法

JAVA中繼承的特點

  • 單根性:JAVA中只能單繼承
  • 傳遞性:子類具有父類及父類所繼承的特性
  • 注意事項
    • 1.私有屬性不能繼承;
    • 2.構造方法不能繼承;
    • 3.不在同包中由默認訪問修飾符修飾的屬性和方法不能繼承;
    • 4.繼承關係中的初始化:先調用父類的構造方法,再調用子類的構造方法。

方法的重載(overload)

在同一個類中,方法名相同,但參數的類型、個數、順序不同。

  • 返回值不同、參數名稱不同均不構成重載。

方法的重寫(override)

子類繼承父類時,在子類中重寫父類的方法,方法名相同,參數列表相同。

  • 子類權限修飾符可以>=父類的權限修飾符。
  • 子類的返回值類型<=父類的返回值類型;子類聲明異常類型<=父類異常類型。

/**
 * 狗狗類,繼承了動物類
 * @author 愛轉圈
 *
 */
public class Dog extends Animal {
	//重寫父類Animal中的eat方法
	@Override
	public void eat(String food) {
		//繼承了父類的屬性name
		this.setName("狗狗1");
		//可以通過get/set方法來訪問父類的屬性
		System.out.println(this.getName()+"吃了"+food);
	}
	
	//重載eat方法,參數個數不同了
	public void eat(String food1,String food2) {
		this.setName("狗狗2");
		System.out.println(this.getName()+"吃了"+food1+"後,又吃了"+food2);
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章