基于多態(tài)之虛方法、抽象類、接口詳解
虛方法:
1、在父類方法的返回值前加 virtual 關(guān)鍵字,標(biāo)記為虛方法,表示這個方法可以被子類重寫。
2、虛方法必須有方法體,方法體中可以沒有任何內(nèi)容。
3、子類可以根據(jù)需求選擇性的是否重寫虛方法。如果需要重寫,在子類方法的返回值前加 override 關(guān)鍵字。
4、子類在重寫虛方法時,可以根據(jù)需求選擇性的是否使用 base 關(guān)鍵字調(diào)用父類中的該方法。
虛方法語法格式如下:
public class Father { public virtual void Do() { //..... } } public class Son : Father { public override void Do() { base.Do();//選擇性的是否調(diào)用。 //....代碼體 } }
抽象類:
1、在定義類的關(guān)鍵字 class 前面加 abstract 修飾,表示這個類為抽象類。子類繼承抽象類后,使用 override 關(guān)鍵字重寫父類中的所有抽象方法。
2、抽象類中不一定有抽象方法,但是抽象方法必須存在于抽象類中。抽象方法也需要用 abstract 關(guān)鍵字進行修飾。
3、抽象方法沒有方法體,且抽象方法必須在子類中實現(xiàn)。
4、抽象類不能被實例化,但是可以有構(gòu)造函數(shù)。因為抽象類中有抽象方法(無方法體),如果實例化抽象類,那么抽象類的對象調(diào)用這些無方法體的抽象方法是沒有任何意義的,所以無法實例化。
抽象類以及抽象方法語法格式如下:
public abstract class Father//抽象類 { public abstract void Do();//抽象方法 } public class Son : Father { public override void Do() { //... } }
接口:當(dāng)抽象類中的所有方法都是抽象方法時,可以用接口的形式來表現(xiàn)。
1、接口使用 interface 關(guān)鍵字定義,沒有 class 關(guān)鍵字,接口名一般使用“IXxxx”。
2、接口中不能包含字段,但是可以包含屬性(自動屬性)。
3、接口中定義的方法不能有方法體,全是抽象方法,但又不需要用 abstract 關(guān)鍵字修飾,因此接口不能被實例化,且不能有構(gòu)造函數(shù)。
4、接口中的成員不允許添加訪問修飾符,默認(rèn)都是 public。
5、一個類可以實現(xiàn)多個接口,被實現(xiàn)的接口之間用逗號分隔開;一個接口也可以繼承多個接口,接口之間也要用逗號分隔;當(dāng)一個接口實現(xiàn)一個接口時,如果這兩個接口中有相同的方法時,可以用 new 關(guān)鍵字隱藏父接口中的方法。
6、繼承者必須實現(xiàn)接口中的所有方法。
接口語法格式如下:
interface IFather { void Do(); } interface IMother:IFather { new void Do();//隱藏父接口的同名方法 void Do1(); } public class Son : IFather,IMother { public void Do() { //...... } public void Do1() { //..... } }
以上這篇基于多態(tài)之虛方法、抽象類、接口詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C# 使用匿名函數(shù)解決EventHandler參數(shù)傳遞的難題
C#動態(tài)生成PictureBox并綁定右鍵菜單,實現(xiàn)刪除圖片2009-05-05時間字符串轉(zhuǎn)換成日期對象datetime的方法
在遇到形如"2012-12-19T17:00:00Z"這樣的時間字符串時,怎樣轉(zhuǎn)換到DateTime類型呢,下面的方法可以解決2013-12-12C#根據(jù)反射和特性實現(xiàn)ORM映射實例分析
這篇文章主要介紹了C#根據(jù)反射和特性實現(xiàn)ORM映射的方法,實例分析了反射的原理、特性與ORM的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-04-04C#/C++ 通過ODBC連接OceanBase Oracle租戶的詳細(xì)過程
近期我們項目正處于將Oracle數(shù)據(jù)庫遷移到OceanBase Oracle租戶模式的階段,考慮到我們項目采用了C++和C#混合開發(fā),并且使用了多種技術(shù),因此存在多種數(shù)據(jù)庫連接方式,C#連接OceanBase的案例相對較少,因此我特意記錄下這一過程,感興趣的朋友一起看看吧2024-05-05C#具名參數(shù)(Named Parameters)的使用
在C#中,具名參數(shù)是一種在方法調(diào)用中使用參數(shù)名稱來指定參數(shù)值的技術(shù),本文主要介紹了C#具名參數(shù)的使用,具有一定的參考價值,感興趣的可以了解一下2024-01-01C# string格式的日期時間字符串轉(zhuǎn)為DateTime類型的方法
這篇文章主要介紹了C# string格式的日期時間字符串轉(zhuǎn)為DateTime類型的方法,需要的朋友可以參考下2017-02-02