C#中的Virtual、Override和new關鍵詞理解

來源:互聯網
上載者:User

標籤: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的效果是不一樣的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.