第三個就是物件導向的另一個重頭戲『繼承』,重點有五項:
1. 如何繼承父類別?
2. 子類別如何複寫父類別的方法?
3. 子類別如何呼叫父類別完成之方法?
4. 不希望繼承的方法如何設定?
5. 如何規範應該實作的方法?
一堆問題,冒出更多的問號!先來簡單定義名詞
父類別:被繼承的類別,如果以下面的例子就是產品(product)的類別。
子類別:繼承別人的類別,如果以下面的例子就是螢幕(Monitoe)或是書本(Book)類別。
首先舉了一個簡單的例子,假設已經定義好一個產品(product)的類別,該類別裡面有一個品牌(brand)的屬性,而後面實做的螢幕(Monitoe)或是書本(Book)就可以直接繼承該產品,而獲得品牌的屬性,概念就像下圖一樣,而繼承只能繼承屬性、方法及建構函式。而繼承的語法就是:public class Book extends Product。
繼承是將父類別的屬性、方法及建構函式做延伸,但有時候雖然父類別已經有相對的方法,但是方法內所執行的內容並不足夠讓子類別使用,子類別有可能需要更多的變化,例如產品有一個getinfo()可以用來顯示廠牌,但是在螢幕的類別裡希望除了廠牌以外也要顯示尺寸的內容,那就必須利用『覆寫』的方式,來將原本父類別的方法在子類別裡面改寫,語法是:override。
使用覆寫後雖然可以改變父類別既有的方法,但往往父類別已經完成了很多子類別可以沿用的屬性、方法及建構函式,所以使用複寫以後要怎麼樣呼叫父類別的內容呢?就可以利用『super』這個特殊字。
呼叫父類別的屬性:super.屬性 (super.brand)
呼叫父類別的方法:super.方法 (super.getinfo())
呼叫父類別的建構函式:super()
又或者有些方法不希望被子類別所繼承,那麼可以利用『final』來設定不被繼承,例如:public final class Monitor就代表螢幕的類別並不會被其他類別繼承使用。
在開發大型專案的時候,常常需要定義許多大家要一起共同遵循的規範,或是規定某些類別需要至少應該實作出的方
法有哪些,這時候就可以製作interface來規範類別必須至少擁有的方法有哪些。
不配合程式碼其實很難理解,附上上課時練習用的程式碼對應著看,就可以很容易了解囉!
這篇跟建立類別是物件導向的重要觀念,趕快拿新專案試用吧!
沒有留言:
張貼留言