抽象類提供多個派生類共享基類的公共定義,它既可以提供抽象方法,也可以提供非抽象方法。抽象類不能例項化,必須通過繼承由派生類實現其抽象方法,因此對抽象類不能使用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.介面...