軟件構造——3.4類圖、重寫與重載

工廠方法:在一定程度上,用接口聲明的對象需要調用某種具體實現類的構造器,而這些構造器在接口的spec中沒有說明,就需要使用者瞭解代碼內部的結構,瞭解有那些構造器,這從一定程度上破壞了抽象性。這就需要在接口中使用靜態工廠方法。
tips:但是由於不同實現有不同的性能、優點,因此有時需要進行折中。

類圖

在這裏插入圖片描述
接口
在這裏插入圖片描述
接口與實現類的關係
在這裏插入圖片描述
類與類之間的繼承
在這裏插入圖片描述多態
方法多態性:重載(方法名相同,參數列表不同,注意:參數列表必須不同,返回值類型可同可不同)
參數多態性:泛型編程中,一個E可以代表多個類
子類型多態性:常用於strategy中,被調用方法的參數聲明爲某一父類,在調用時,可以根據傳入參數(子類型),進行該子類型方法的調用。

關於重載重寫的一個易錯練習
(靜態檢查時,看聲明;動態運行時,看實際的類型)
在這裏插入圖片描述
注意重載和重寫的區別:
特別地,在重寫中,方法的返回值可以是子類(Java支持協變,不支持逆變)。
在這裏插入圖片描述
實踐一下:
在這裏插入圖片描述輸出
在這裏插入圖片描述
首先,這裏並沒有發生編譯錯誤,說明重寫時,返回值可以是父類返回值的子類。運行時,這裏調用了被子類重寫後的方法,並在子類方法中,隱式調用了父類方法,只不過省略了super.getAnimal();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章