虛方法: 1、在父類方法的返回值前加 virtual 關鍵字,標記為虛方法,表示這個方法可以被子類重寫。 2、虛方法必須有方法體,方法體中可以沒有任何內容。 3、子類可以根據需求選擇性的是否重寫虛方法。如果需要重寫,在子類方法的返回值前加 override 關鍵字。 4、子類在重寫虛方法時,可以根據 ...
虛方法:
1、在父類方法的返回值前加 virtual 關鍵字,標記為虛方法,表示這個方法可以被子類重寫。
2、虛方法必須有方法體,方法體中可以沒有任何內容。
3、子類可以根據需求選擇性的是否重寫虛方法。如果需要重寫,在子類方法的返回值前加 override 關鍵字。
4、子類在重寫虛方法時,可以根據需求選擇性的是否使用 base 關鍵字調用父類中的該方法。
虛方法語法格式如下:
1 public class Father 2 { 3 public virtual void Do() 4 { 5 //..... 6 } 7 } 8 public class Son : Father 9 { 10 public override void Do() 11 { 12 base.Do();//選擇性的是否調用。 13 //....代碼體 14 } 15 }
抽象類:
1、在定義類的關鍵字 class 前面加 abstract 修飾,表示這個類為抽象類。子類繼承抽象類後,使用 override 關鍵字重寫父類中的所有抽象方法。
2、抽象類中不一定有抽象方法,但是抽象方法必須存在於抽象類中。抽象方法也需要用 abstract 關鍵字進行修飾。
3、抽象方法沒有方法體,且抽象方法必須在子類中實現。
4、抽象類不能被實例化,但是可以有構造函數。因為抽象類中有抽象方法(無方法體),如果實例化抽象類,那麼抽象類的對象調用這些無方法體的抽象方法是沒有任何意義的,所以無法實例化。
抽象類以及抽象方法語法格式如下:
1 public abstract class Father//抽象類 2 { 3 public abstract void Do();//抽象方法 4 } 5 public class Son : Father 6 { 7 public override void Do() 8 { 9 //... 10 } 11 }
介面:當抽象類中的所有方法都是抽象方法時,可以用介面的形式來表現。
1、介面使用 interface 關鍵字定義,沒有 class 關鍵字,介面名一般使用“IXxxx”。
2、介面中不能包含欄位,但是可以包含屬性(自動屬性)。
3、介面中定義的方法不能有方法體,全是抽象方法,但又不需要用 abstract 關鍵字修飾,因此介面不能被實例化,且不能有構造函數。
4、介面中的成員不允許添加訪問修飾符,預設都是 public。
5、一個類可以實現多個介面,被實現的介面之間用逗號分隔開;一個介面也可以繼承多個介面,介面之間也要用逗號分隔;當一個介面實現一個介面時,如果這兩個介面中有相同的方法時,可以用 new 關鍵字隱藏父介面中的方法。
6、繼承者必須實現介面中的所有方法。
介面語法格式如下:
1 interface IFather 2 { 3 void Do(); 4 } 5 6 interface IMother:IFather 7 { 8 new void Do();//隱藏父介面的同名方法 9 void Do1(); 10 } 11 12 public class Son : IFather,IMother 13 { 14 public void Do() 15 { 16 //...... 17 } 18 19 public void Do1() 20 { 21 //..... 22 } 23 }