程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 代碼大全 繼承-代碼大全 派生後覆蓋了某個子程序,但在其中沒做任何操作,這種情況也值得懷疑

代碼大全 繼承-代碼大全 派生後覆蓋了某個子程序,但在其中沒做任何操作,這種情況也值得懷疑

編輯:編程綜合問答
代碼大全 派生後覆蓋了某個子程序,但在其中沒做任何操作,這種情況也值得懷疑

假設你有一個Cat類,他有一個Scratch(抓)成員函數,可是最終你發現有些貓的爪尖沒了,不能抓了,你可能想從Cat類派生一個叫ScratchlessCat(不能抓的貓)的類,然後覆蓋Scratch方法讓它什麼都不做。

這種方法是不可取的,修正這一問題的位置不在派生類,而是在最初的Cat類中,應該創建一個Claw(爪子)類並讓Cat類包含它,問題的根源在於做了所有貓能抓的假設

後半句不能理解:"在最初的Cat類中,應該創建一個Claw(爪子)類並讓Cat類包含它"。怎麼解決這個問題?包含Claw屬性,判斷該屬性是否存在嗎?

最佳回答:


面向對象不是用來模擬現實世界的,它純粹是一種代碼設計的手段,目的就是最大限度使得程序簡單可維護。
就你的場景不能得出使用類的聚合代理繼承會更好,或者誰不可取的結論。
覆蓋的函數什麼都不寫很正常。在工程實踐中你可以看到這樣的代碼。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved