12. 抽象与密封
一、抽象類與抽象方法
1、抽象類與抽象方法聲明:
抽象類:在面向?qū)ο蟮母拍钪?#xff0c;所有的類都是通過對象來描述,但并不是所有的類都用來描述對象。如果一個(gè)類中沒有足夠的信息來描繪一個(gè)具體的對象,這樣的類就是抽象類。
聲明:他們都必須包含關(guān)鍵字 abstract ,并且抽象方法不能有方法體。抽象類中可以包含非抽象方法。
2、抽象類特性:
(1)抽象類不能實(shí)例化,必須通過繼承由派生類來實(shí)現(xiàn)其抽象方法。如果派生類沒有實(shí)現(xiàn)所有的抽象方法,則該派生類也必須聲明為抽象類。
(2)抽象類的非抽象子類(即派生類)必須通過重載實(shí)現(xiàn)其繼承的所有抽象方法和抽象服務(wù)器 。
3、抽象方法
(1)抽象非是隱式的虛方法,只允許聲明在抽象類中,不能使用static、private或virtual修飾符;
(2)重寫抽象方法時(shí)采用override 。
4、抽象方法和虛方法的區(qū)別:
虛方法有實(shí)現(xiàn)部分,并且派生類對其重寫是可選的;抽象方法沒有實(shí)現(xiàn)部分,并且強(qiáng)制非抽象派生類對其重寫。
5、abstract修飾符
(1)他可以和類、方法、屬性、索引器及事件一起使用;
(2)在類聲明中使用 abstract 修飾符以表明這個(gè)類只能是其他類的基類;
(3)他不能修飾靜態(tài)方法或靜態(tài)屬性 。
二、密封類與密封方法
1、密封類
(1)密封類即不能繼承的類,C#中使用關(guān)鍵字 sealed,將類和方法聲明為密封類或者密封方法;
(2)密封類中不能包含虛方法(virtual)和抽象方法(abstract)。
2、密封方法
(1)用修飾符 sealed 進(jìn)行標(biāo)記的方法;
(2)使用 sealed 修飾符可以防止派生類進(jìn)一步重寫該方法 。
三、虛方法
(1)子類可以對父類中的虛方法進(jìn)行重寫;
(2)定義:
如: public virtual void eat(); //使用virtual關(guān)鍵字定義
??? ?? public override void eat(); //使用override關(guān)鍵字進(jìn)行重寫
?
轉(zhuǎn)載于:https://www.cnblogs.com/yx-xiansheng/p/7628113.html
總結(jié)
- 上一篇: 【Codeforces Round #4
- 下一篇: 剑指offer二十二之从上往下打印二叉树