文章目錄
- 抽象類和抽象方法
- 實現抽象方法
- 接口、類和抽象類
- 密封類
|
如果說繼承是面向對象設計理論的基石,那么抽象理論和方法就是繼承理論的頂梁柱。
抽象類和抽象方法
簡單的說,用來描述共性的類就是抽象類,抽象類中不考慮具體實現,只確定必須具有的行為,即確定抽象方法。如教師的任務是教學,具體教什么,如何教,每個教師都有自己獨特的一面,對教學這個動作就可以提取出來作為抽象方法,而不考慮具體實現內容。包含抽象方法的類就是抽象類。抽象類和抽象方法聲明使用abstract
關鍵字。
- 語法格式如下:
<訪問修飾符> abstract class 抽象類名{ //類體<訪問修飾符> abstract 返回類型 方法(); //抽象方法}
例如,聲明了有一個抽象方法
Display
方法的抽象類Employee
public abstract class Employee{public abstract void Display(); //抽象方法Display}
實現抽象方法
C#中通過方法重寫來實現抽象方法。當一個抽象基類派生一個派生類時,派生類將繼承基類的所有特征,重新實現所有的抽象方法。在派生類中實現基類的抽象方法,是使用
override
關鍵字來重寫基類方法。
為上邊的抽象類Employee
創建一個名為Manage
的派生類,實現Employee
類中的抽象方法Display
。public class Manager : Employee{private string name;public Manager(string Name){name = Name;}public override void Display(){Console.WriteLine("Name:" + name);}}
在主函數中可以創建Manager類的對象,調用Display方法顯示Manager的name。
例如:Manager obj = new Manager("李強"); obj.Display();
接口、類和抽象類
一個類可以同時繼承類和接口,或者抽象類和接口,抽象類和類不能在一個類的繼承列表中同時出現。如果派生類同時繼承類或抽象類或接口,一定要把類或者抽象類寫在前面,接口寫在后面,類名和接口名之間用“
,
”隔開,接口沒有先后順序。每一種繼承都要根據各自的規則去實現。
接口與抽象類的區別如下。- 抽象類是一個不完全的類,需要通過派生類來完善它。
- 接口只是對類的約束,它僅僅承諾了類能夠調用的方法。
- 一個類一次可以實現若干個接口,但是一個類只能繼承一個基類。
- 抽象類只需派生類實現他的抽象方法,接口要求必須實現它的所有成員。
在實際編程中,接口的使用要比抽象類廣泛的多。
密封類
與抽象類相反,C#支持創建密封類,密封類是不能當基類的類。其他的類不能從此派生,從而保證了密封類的密封性和安全性。在C#中使用sealed關鍵字創建密封類。
代碼示例:public sealed class Animal{public Animal(){Console.WriteLine("動物被構造");}}
當從animal派生派生類時,編譯器會提示出現錯誤。設計類的時候,通常情況下是不需要將類設計為封裝類的,因為封裝類會讓類的拓展性非常差,這個類也無法再次派生和拓展。但是出于某種目的,當程序塊只完成某些特定任務時,就可以使用密封類對類進行密封,以保證類的可靠性。
------------------------------------------------------------------------------------------分割線 ------------------------------------------------------------------------------------------
- 博主簡介:
- 工業自動化上位機軟件工程師、機器視覺算法工程師、運動控制算法工程師。目前從業于智能制造自動化行業。 博主郵箱:2296776525@qq.com
- 幫忙點個贊吧。哈哈。