天天看點

Java中的繼承和多态

繼承和多态是面向對象開發語言中非常重要的一個環節,若使用得當,整個程式的架構将變得非常有彈性,同時可以減少代碼的 備援性。

繼承的概念

    在已經存在的類的基礎上進行擴充和改造,形成一個新的類。滿足“is   a”的關系就是繼承

eg:

父類 :Animals。有name 和age 屬性,提供set和get方法。

子類:Bird 。Bird中增加了color屬性,提供set和get方法。

兩者都是繼承于Animals。

Java中的繼承和多态

Bird類

Java中的繼承和多态

Text類和結果

Java中的繼承和多态

Bird繼承了Animals類,并且滿足“is a ”的關系,鳥事動物,這樣的邏輯是對的,并且在Animals的基礎上增加了新的屬于它自己的屬性——color。

Animals提供了構造方法,則在Bird的構造方法中必須顯性的調用父類的構造方法,而且必須在 第一行。

子類若要調用父類的方法,可以有super.方法名調用。

Object類------java中萬物之祖。

 java中的每一個類都有一個父類,有的顯性的表示,有的則隐性表示,但都是繼承一Objec,他是所有java類的父類。

多态的概念

  多态是一種事務,多種形态。用名字一樣的代碼根據要求的不同,幹不一樣的事情。

分類

1:對象的多态。(父對象引用指向子類執行個體)

2:方法的多态。(分為方法的重載和重寫或者覆寫)

對象的多态。

Java中的繼承和多态

若在子類中重寫了父類的方法,則通過對象的多态調用的是子類中重寫的方法。

方法的多态

    1 : 方法的重載

重載是發生在同一類中,函數的名字相同,但是函數的參數個數,和參數類型,隻要不一樣,就是重載。

Java中的繼承和多态

函數重寫。

    重寫發生在兩個類中,父類的方法,在子類中重新寫。

    重寫的函數名字和參數清單完全一樣。

    重寫的函數隻能抛出比之前更小的異常。通路權限隻能比之前的更大。

    eg:animals 類中寫了eat()    方法,接下來在子類中重寫此方法。

Java中的繼承和多态

重寫的函數前加@Override 标示。

前面講的對象的多态裡面,父類對象指向子類執行個體,隻能調用父類和子類中相同的方法,子類中新添加的方法并不能調用,若要調用就要有強制類型轉換。

Java中的繼承和多态

 這樣父類對象就可以調用子類的方法了,

難道說所有的類型都可以互相轉換的嗎?

不是,隻有繼承關系的對象之間才可以互相轉換.

Java中的繼承和多态
Java中的繼承和多态

instanceof 判斷左邊的元素是不是等号右邊的執行個體.

寫的有點亂,大家多批評改正,感謝。