從設計的目的談介面和抽象類的區別

2021-10-24 18:56:50 字數 428 閱讀 9347

介面的設計目的,是對類的行為進行約束(更準確的說是一種「有」約束,因為介面不能規定類不可以有什麼行為),也就是提供一種機制,可以強制要求不同的類具有相同的行為。它只約束了行為的有無,但不對如何實現行為進行限制。對「介面為何是約束」的理解,我覺得配合泛型食用效果更佳。

而抽象類的設計目的,是**復用。當不同的類具有某些相同的行為(記為行為集合a),且其中一部分行為的實現方式一致時(a的非真子集,記為b),可以讓這些類都派生於乙個抽象類。在這個抽象類中實現了b,避免讓所有的子類來實現b,這就達到了**復用的目的。而a減b的部分,留給各個子類自己實現。正是因為a-b在這裡沒有實現,所以抽象類不允許例項化出來(否則當呼叫到a-b時,無法執行)。

從設計目的來區分介面和抽象類之間的區別

這篇文章對於這兩者的區別,從乙個根本且新穎的角度來講的 最主要的區別就是在於,介面是對於一些方法的 強制以下是原文 本身的設計目的就是不同的。以下是原文 大家講的都很詳細了,我說說我自己的一點淺薄的理解。我一直認為,工科的知識有個很明顯的特點 以用為本 在討論介面和抽象類的區別時,我也想從 用 的角...

抽象方法 抽象類 介面 介面和抽象類的區別

某個父類只知道子類因該包含什麼樣的方法,無法知道這些子類如何實現這些方法。抽象類包含該方法但沒有對該方法的具體實現。有抽象方法的類只能被定義為抽象類,抽象類裡可以沒有抽象方法。抽象方法和抽象類的規則 public abstract class shape private string color p...

java抽象類和普通類的區別,抽象類和介面的區別

1.抽象類不能被例項化。2.抽象類可以有建構函式,被繼承時子類必須繼承父類乙個構造方法,抽象方法不能被宣告為靜態。3.抽象方法只需申明,而無需實現,抽象類中可以允許普通方法有主體 4.含有抽象方法的類必須申明為抽象類 5.抽象的子類必須實現抽象類中所有抽象方法,否則這個子類也是抽象類。abstrac...