亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么時候使用抽象類?

什么時候使用抽象類?

MMTTMM 2019-12-21 11:04:40
這是有關抽象類的MSDN文章,但我真的不明白。。。我什么時候應該真正使用抽象類?使用抽象類的優點是什么?
查看完整描述

3 回答

?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

當您需要一個用于繼承和多態性的類時,抽象類很有用,但是實例化該類本身,僅實例化其子類是沒有意義的。當您要為一組共享一些通用實現代碼的子類定義模板時,通常會使用它們,但同時您也要保證不能創建超類的對象。

例如,假設您需要創建“狗”,“貓”,“倉鼠”和“魚”對象。它們具有類似的屬性,例如顏色,大小和支腳數量以及行為,因此您可以創建Animal超類。但是,動物是什么顏色?動物物體有幾條腿?在這種情況下,實例化Animal類型的對象沒有太大意義,而僅實例化其子類。

抽象類在多態性方面還具有額外的好處-允許您將(抽象)超類的類型用作方法參數或返回類型。例如,如果您有一個帶有train()方法的PetOwner類,則可以將其定義為采用Animal類型的對象,例如train(Animal a),而不是為Animal的每個子類型創建一個方法。


查看完整回答
反對 回復 2019-12-21
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

通過使用抽象類,我們可以使類更通用。

例如:如果類A是一個抽象類,并且有類B,類C和類D擴展了抽象類A,則這些子類將繼承一個已經在抽象類A中聲明的方法,從而使該方法更加通用。


查看完整回答
反對 回復 2019-12-21
?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

當您在類層次結構中為類定義行為時,請使用抽象類,該行為永遠不會直接用于實例化對象。

因此,暫時將自己視為上帝。您的CBabyBoy和CBanyGirl類不會是抽象的-因為這些都是可以創建的固體對象。另一方面,您的CPerson和CAnimal類將是抽象的-從類型層次結構的角度來看,它們很有用,但您永遠不會運行CAnimal dingbat = new Animal();


查看完整回答
反對 回復 2019-12-21
  • 3 回答
  • 0 關注
  • 863 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號