抽象類和介面

2021-08-27 13:18:36 字數 1722 閱讀 9983

抽象類提供多個派生類共享基類的公共定義,它既可以提供抽象方法,也可以提供非抽象方法。抽象類不能例項化,必須通過繼承由派生類實現其抽象方法,因此對抽象類不能使用new關鍵字,也不能被密封。

介面是包含一組虛方法的抽象型別,其中每一種方法都有其名稱、引數和返回值。介面是核心,其定義了要做的事情,包含了許多的方法,但沒有定義這些方法應該如何做。介面方法不能包含任何實現。乙個類可以實現多個介面,當乙個類繼承某個介面時,它不僅要實現該介面定義的所有方法,還要實現該介面從其他介面中繼承的所有方法。

對於抽象類和介面找了兩個例項

抽象類:

介面:這兩個例項中分別應用的是介面和抽象類實現,當我需要新增其他型別的或是其他的程式設計師,都可以很容易的新增,擴充性很好,這樣使得我們的**更容易維護!當然這兩個例項都很簡單,這樣的話感覺兩者沒有什麼區別。

1,介面支援多繼承;抽象類不能實現多繼承。舉例當使用抽象類時,由於不能實現多繼承,這時,需求改變需要新增新的功能,我們就可以用介面實現。

,抽象類裡面的方法可以有實現,但是介面裡面的方法確是只能宣告 3

,抽象類的抽象成員可被子類部分實現,介面的成員需要實現類完全實現 1

,類是對物件的抽象,抽象類是對類的抽象,介面是對行為的抽象 2

,如果行為跨越不同類的物件,可使用介面,對於一些相似的類物件,用繼承抽象類 3

,從設計角度講,抽象類是從子類中發現了公共的東西,泛化出父類,然後子類繼承父類,而介面是根本布置子類的存在,方法如何實現還不確認,預先定義。 4

,實現介面和繼承抽象類並不衝突。

例如:

//1. 定義抽象類

public abstract class animal

//宣告抽象方法

public abstract void show();

//實現一般方法

public void makevoice()

}//2. 定義介面

public inte***ce iaction

//3. 實現抽象類和介面

public class duck : animal, iaction

//過載抽象方法

public override void show()

//過載抽象屬性

public override string name

}//實現介面方法

public void move()

}public class dog : animal, iaction

public override void show()

public override string name

}public void move()

}//4. 客戶端實現

public class testanmial

}

如果某一些類的實現有共通之處,則可以抽象出來乙個抽象類,讓抽象類實現介面的公用的**,而那些個性化的方法則由各個子類去實現。

所以,抽象類是為了簡化介面的實現,他不僅提供了公共方法的實現,讓你可以快速開發,又允許你的類完全可以自己實現所有的方法,不會出現緊耦合的問題。

1 優先定義介面

2如果有多個介面實現有公用的部分,則使用抽象類,然後整合它。

通過相同與不同的比較,我們只能說介面和抽象類,各有所長,但無優略。在實際的程式設計實踐中,我們要視具體情況來酌情量才。

介面和抽象類

介面和抽象類 今天自學了一下介面,從第一次接觸介面又進一步理解介面的原理。想到介面或許我們更多的是想到和類的對比,而類中抽象類和介面又更為相似。現在我講下我對介面和抽象類的理解。如果單從具體 來看,對這兩個概念很容易模糊,甚至覺得介面就是多餘的,因為單從具體功能來看,除多重繼承外 c 抽象類似乎完全...

抽象類和介面

抽象類 1.是一種特殊的類,除了不能被例項化外,具有類得其他特性.2.抽象類的方法可以不宣告為abstract,此時可以實現方法提 如果宣告為abstract,則不可以實現方法體,只能宣告,如 public abstract int remove int i,int j 此時類必須宣告為抽象 3.乙...

抽象類和介面

1.抽象類 含有abstract修飾符的類即為抽象類。可用於實現 重用。抽象類與普通類的唯一區別 不能建立例項物件 允許有抽象方法,但不必須是抽象的。抽象類中定義的抽象方法必須在具體子類中實現,所以不能有抽象構造方法或抽象靜態方法 如果沒有全部實現抽象父類的抽象方法,子類也要定義為抽象型別。2.介面...