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

2021-10-13 02:33:12 字數 606 閱讀 8975

這篇文章對於這兩者的區別,從乙個根本且新穎的角度來講的

最主要的區別就是在於,介面是對於一些方法的「強制以下是原文:本身的設計目的就是不同的。

以下是原文:

大家講的都很詳細了,我說說我自己的一點淺薄的理解。

我一直認為,工科的知識有個很明顯的特點:「以用為本」。

在討論介面和抽象類的區別時,我也想從「用」的角度試著總結一下區別,所以我想到了設計目的。

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

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

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

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

介面和抽象類 設計角度來分析

1.抽象類和介面的語法特性 抽象類不允許被例項化,只能被繼承.它可以包含屬性和方法.方法既可以包含 的實現,也可以不包含 的實現.不包含 的實現叫做抽象方法.介面不能包含屬性,只能宣告方法,方法不能包含 實現.類實現介面的時候,必須實現介面中宣告的所有方法.2.抽象類和介面存在的意義 抽象類是對 成...

PHP之抽象類和介面

對於oop,估計大多數人並不陌生。有些人除php外也學習不少其他語言,會發現php的不同之處,可能語法極其醜陋,但並不妨礙它成為世界上最好的語言 邪教語言 php可以允許常量作為介面的一部分,而對於抽象的理解十分重要。計算機上,對抽象的理解與自然語言中我們每天使用的抽象概念有所不同。比如,我們指代 ...