abstract class
inte***ce
1.定義方式
abstract
class demo{
abstract
void method1();
abstract
void method2();…}
(可以有抽象和非抽象的方法)
inte***ce
demo
(不可以有具體的方法)
2.使用上
所以根據他們的特性,abstract class 類可以定義預設行為,而inte***ce不行,因此,如果要修改使用在多處的方法,inte***ce會很麻煩,可能要修改多處,而abstract class就只用修改預設方法。
從設計層面
繼承關係要求子類和父類在概念本質上是相同的
abstract class 表示「is-a」的關係(本質上是)
inte***ce 表示「like-a」的關係(具有什麼的功能)
選用介面和抽象類的時候,要弄清楚物件的本質和它要實現的另外的方法
本質用abstract class ,功能用inte***ce
介面使用原則——介面隔離原則
isp簡介(isp–inte***ce segregation principle):
使用多個專門的介面比使用單一的總介面要好。
乙個類對另外乙個類的依賴性應當是建立在最小的介面上的。
乙個介面代表乙個角色,不應當將不同的角色都交給乙個介面。沒有關係的介面合併在一起,形成乙個臃腫的大介面,這是對角色和介面的汙染。
「不應該強迫客戶依賴於它們不用的方法。介面屬於客戶,不屬於它所在的類層次結構。」這個說得很明白了,再通俗點說,不要強迫客戶使用它們不用的方法,如果強迫使用者使用它們不使用的方法,那麼這些客戶就會面臨由於這些不使用的方法的改變所帶來的改變。
對抽象類和介面的理解
二者不同 抽象類 1.抽象類中可以定義構造器 2.可以有抽象方法和具體方法 3.介面中的成員全都是 public 的 4.抽象類中可以定義成員變數 5.有抽象方法的類必須被宣告為抽象類,而抽象類未必要有抽象方法 6.抽象類中可以包含靜態方法 7.乙個類只能繼承乙個抽象類 介面 1.介面中不能定義構造...
抽象類和介面的理解
1.抽象類 抽象類更像是乙個模板,它擁有類的所用功能,它不僅可以寫抽象方法,也可以寫實現的方法,定義變數等等。總歸他有類的一切功能只是不能被例項化而已。它有單繼承的功能。2.介面 介面更像是對於行為上的定義,它是抽象方法的集合。它的變數會被private static final預設修飾。他可以擁有...
java 抽象類和介面的理解
在物件導向的概念中,我們知道所有的物件都是通過類來描繪的,但是並不是所有的類都是用來描繪物件的,如果乙個類中沒有包含足夠的資訊來描繪乙個具體的物件,這樣的類就是抽象類。抽象類往往用來表徵我們在對問題領域進行分析 設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象,我們不能把它...