標籤:des style blog http color 使用
來源:http://blog.csdn.net/jackiezhw/article/details/2673992
在 C# 中,衍生類別可以包含與基類方法同名的方法。
- 基類方法必須定義為 virtual。
- 如果衍生類別中的方法前面沒有 new 或 override 關鍵字,則編譯器將發出警告,該方法將有如存在 new 關鍵字一樣執行操作。
- 如果衍生類別中的方法前面帶有 new 關鍵字,則該方法被定義為獨立於基類中的方法。
- 如果衍生類別中的方法前面帶有 override 關鍵字,則衍生類別的對象將調用該方法,而不是調用基類方法。
- 可以從衍生類別中使用 base 關鍵字調用基類方法。
- override、virtual 和 new 關鍵字還可以用於屬性、索引器和事件中。
1 using System; 2 using System.Collections.Generic; 3 4 5 public class Car 6 { 7 8 public virtual void DescribeCar() 9 { 10 Console.WriteLine("Base Car!"); 11 } 12 13 } 14 15 16 public class ConvertibleCar : Car 17 { 18 public new void DescribeCar() 19 { 20 base.DescribeCar(); 21 Console.WriteLine("Convertible Car!"); 22 } 23 } 24 25 public class DerivedConvertibleCar : ConvertibleCar 26 { 27 public new void DescribeCar() 28 { 29 base.DescribeCar(); 30 Console.WriteLine("DerivedConvertibleCar Car!"); 31 } 32 } 33 34 35 public class DerivedMinivan : Minivan 36 { 37 public override void DescribeCar() 38 { 39 base.DescribeCar(); 40 Console.WriteLine("DerivedMinivan Car!"); 41 } 42 } 43 public class Minivan : Car 44 { 45 public override void DescribeCar() 46 { 47 base.DescribeCar(); 48 Console.WriteLine("Minivan Car!"); 49 } 50 } 51 52 53 public class CarCollections 54 { 55 public static void Main() 56 { 57 List<CAR> cars = new List<CAR>(); 58 59 cars.Add(new Car()); 60 cars.Add(new ConvertibleCar()); 61 cars.Add(new Minivan()); 62 cars.Add(new DerivedConvertibleCar()); 63 cars.Add(new DerivedMinivan()); 64 foreach (Car car in cars) 65 car.DescribeCar(); 66 } 67 }
輸出結果:
Base Car!【Car】Base Car!【ConvertibleCar】Base Car!【Minivan】Minivan Car!Base Car!【DerivedConvertibleCar】Base Car!【DerivedMinivan 】Minivan Car!DerivedMinivan Car!
可以看到使用new和使用override的效果是不一樣的。