面向對象的特征二:繼承
1、為什么要設計繼承?
2、通過”class A extends B“實現類的繼承。
子類:A ? ? ? ? ? ? ? ? ? ? ? ? ?父類(或基類或SuperClass):B
3、子類繼承父類以后,父類中聲明的屬性、方法,子類都可以獲取到。? ? ? ? ? ? 明確:父類中私有的屬性或方法,子類同樣可以獲取到,只是由于封裝性(private)的設計,只是子類不可以直接調用罷了。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?若想子類可以調用父類的private 方法時,需要有getter、setter方法。 ? ? ? 子類除了通過繼承,獲取父類的結構之外,還可以定義自己特有的成分。? ? extends:子類并不是父類的子集,而是對父類功能的”擴展“。
4、java中類的繼承性只支持單繼承:一個類只能繼承一個父類,反之,一個父類可以被多個子類繼承。(一個兒子只能有一個父親,但是一個父親可以有多個兒子)
5、子類父類都是相對概念。子類可以再被其他類繼承,便又充當著父類的角色。
方法的重寫: ?修飾符 返回值類型 方法名 (參數列表){ }
1、前提:有子類繼承父類
2、子類繼承父類后,若父類的方法對子類不適用,那么子類可以對父類方法進行重寫(override ? overwrite)、覆蓋、覆寫。
3、重寫的規則:1)要求子類方法的 ”返回值類型 方法名 (參數列表)“與父類的方法一樣。2)子類方法的修飾符不能小于父類的修飾符(當父類是public時,因為public最大,子類不能小于它,也必須是public) 3)若父類方法拋異常,那么子類方法拋的異常不能大于父類的。4)子父類的方法必須同為static或同為非static的。
重寫的方法前面有一個綠色的小三角,意思為重寫。
當父類的方法中有private的方法時候,子類無法重寫父類的該方法,因為子類根本看不到父類的私有方法,因此此時可以隨便重新定義,所以也可以修改返回值類型。 ? ? ? ? ? ? ? 而真正的重寫,返回值類型必須是一樣的。只是可以修飾符不同。