簡體   English   中英

如果無法創建抽象類的新對象,那么在抽象類中使用非抽象方法有什么意義呢?

[英]What is the point of having non abstract methods in the abstract class if a new object of the abstract class can't be created?

抽象類可以同時具有抽象和非抽象方法。 如果無法創建抽象類的新對象,那么在抽象類中使用非抽象方法有什么意義呢?

我知道你可以覆蓋子類中的非抽象方法,然后通過子類的對象使用它。 但是如果你這樣做,那么首先需要使用非抽象方法和實現是什么?

想想更多或谷歌更多。

  1. 如果您的子類具有通用功能,那么為什么要覆蓋每個類中的方法? 你可以使用基類(在這種情況下是抽象的)方法。需要非abtract(具體,因為他們主要調用)方法。
  2. 在那里有抽象方法(你已經知道我認為),我們可以根據我們的要求覆蓋。
  3. 如果你需要所有方法都應該根據他們的要求覆蓋每個子類,那么你可以去接口。

簡單的答案:重用和可維護性。

假設有4個具體類擴展你的抽象類,它們都將分享一些行為。

在這種情況下,最好在抽象類中實現該方法,而不是在所有具體類中單獨定義它。

具體的子類可以使用抽象超類中的方法。 因此,子類之間的所有共享功能都可以進入基本抽象類。

代碼重用。 如果不覆蓋繼承類中的非抽象方法,則從抽象類繼承它們。

相反,將它們放在子類中違反了DRY的原則(不要重復自己):如果所有子類具有相同的功能,為什么要在每個類中重復寫入它?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM