今天看了下繼承和多型,總結了以下要點:
1.繼承的用法
- 子類擁有父類的非private屬性和方法
- 子類可以有自己的屬性和方法
- 子類可以重寫父類的方法(override)
2.繼承慎用繼承
- 父類變,子類則變
- 破壞了封裝,對於父類而言裡面的屬性方法對子類都是透明的
- 繼承是強耦合的關係
3.什麼時候用繼承
《Think in java》中提供瞭解決辦法:問一問自己是否需要從子類向父類進行向上轉型。如果必須向上轉型,則繼承是必要的,但是如果不需要,則應當好好考慮自己是否需要繼承。
最後一句話:慎用繼承
我們再來看看多型
1.基於繼承的多型用法
父類引用指向子類物件:如 B extend A 則可以 A a = new B b
- 若子類過載了父類方法,則呼叫父類方法
- 若子類重寫了父類的方法,則呼叫子類方法
- **注意:**過載指:方法名一樣, 引數和返回值型別不同
2.多型注意:
- 由於是指向子類物件,屬於向上轉型,只能訪問父類的屬性和方法
- 子類中存在,父類中不存在的,引用是不可以使用,過載也包括在內
- 子類重寫了父類的方法,那麼則會呼叫子類的物件
3.多型的三個必要條件:繼承,重寫,向上轉型
4.基於介面的多型
- 繼承都是單繼承。但是介面可以是多繼承多實現
- 在介面的多型中,必須是指向這一介面的例項的引用