1、父類中有方法a,添加virtua修飾符可聲明為虛方法,在子類中可以用override聲明后重寫方法a。
2、父類中有方法a,在子類中可以有new修飾符聲明后隱藏父類方法。
子類重寫方法后,對於子類的任何實例,父類的原方法a都已經不存在。
子類隱藏父類方法后,父類的原方法仍然存在,當子類的實例的類型轉為父類時,調用的方法a即為原來的方法。
1 //重寫方法 2 class A 3 { 4 public virtual void a() 5 { 6 Console.WriteLine('CLASS is A'); 7 } 8 } 9 10 class B:A 11 { 12 public override void a() 13 { 14 Console.WriteLine('CLASS is B'); 15 } 16 } 17 18 class client 19 { 20 static void main() 21 { 22 B b=new B(); 23 A a=b; 24 25 a.a(); 26 b.a(); 27 } 28 } 29 30 /*輸出 31 CLASS IS B 32 CLASS IS B 33 */ 34 35 36 //隱藏方法 37 class A 38 { 39 public void a() 40 { 41 Console.WriteLine('CLASS is A'); 42 } 43 } 44 45 class B:A 46 { 47 public new void a() 48 { 49 Console.WriteLine('CLASS is B'); 50 } 51 } 52 53 class client 54 { 55 static void main() 56 { 57 B b=new B(); 58 A a=b; 59 60 a.a(); 61 b.a(); 62 } 63 } 64 65 /*輸出 66 CLASS IS A 67 CLASS IS B 68 */
