12. 抽象與密封
阿新 • • 發佈:2017-10-05
靜態 abs 一起 bstr virtual 服務 led 如果 ide
虛方法有實現部分,並且派生類對其重寫是可選的;抽象方法沒有實現部分,並且強制非抽象派生類對其重寫。
5、abstract修飾符
(1)他可以和類、方法、屬性、索引器及事件一起使用;
(2)在類聲明中使用 abstract 修飾符以表明這個類只能是其他類的基類;
(3)他不能修飾靜態方法或靜態屬性 。 )使用 sealed 修飾符可以防止派生類進一步重寫該方法 。
一、抽象類與抽象方法
1、抽象類與抽象方法聲明:
他們都必須包含關鍵字 abstract ,並且抽象方法不能有方法體。抽象類中可以包含非抽象方法。
2、抽象類特性:
(1)抽象類不能實例化,必須通過繼承由派生類來實現其抽象方法。如果派生類沒有實現所有的抽象方法,則該派生類也必須聲明為抽象類。
(2)抽象類的非抽象子類(即派生類)必須通過重載實現其繼承的所有抽象方法和抽象服務器 。
3、抽象方法
(1)抽象非是隱式的虛方法,只允許聲明在抽象類中,不能使用static、private或virtual修飾符;
(2)重寫抽象方法時采用override 。
4、抽象方法和虛方法的區別:
虛方法有實現部分,並且派生類對其重寫是可選的;抽象方法沒有實現部分,並且強制非抽象派生類對其重寫。
5、abstract修飾符
(1)他可以和類、方法、屬性、索引器及事件一起使用;
(2)在類聲明中使用 abstract 修飾符以表明這個類只能是其他類的基類;
(3)他不能修飾靜態方法或靜態屬性 。
二、密封類與密封方法
1、密封類
(1)密封類即不能繼承的類,C#中使用關鍵字 sealed,將類和方法聲明為密封類或者密封方法;
(2)密封類中不能包含虛方法(virtual)和抽象方法(abstract)。
2、密封方法
(1)用修飾符 sealed 進行標記的方法;
(2
三、虛方法
(1)子類可以對父類中的虛方法進行重寫;
(2)定義:
如: public virtual void eat(); //使用virtual關鍵字定義
public override void eat(); //使用override關鍵字進行重寫
12. 抽象與密封