程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 重寫基類方法與隱藏基類方法的區別

重寫基類方法與隱藏基類方法的區別

編輯:C#入門知識

其實要分析二者的區別,就是分析override和new這兩個關鍵字在控制類的版本上的區別。 首先,我先列出本地MSDN 2008上與此有關的一些官方資料:

  • “override(C# 參考)”:(ms-help://MS.MSDNQTR.v90.chs/dv_csref/html/dd1907a8-acf8-46d3-80b9-c2ca4febada8.htm)
  • “new 修飾符(C# 參考)”:(ms-help://MS.MSDNQTR.v90.chs/dv_csref/html/a2e20856-33b9-4620-b535-a60dbce8349b.htm)
  • “使用 Override 和 New 關鍵字進行版本控制(C# 編程指南)”:(ms-help://MS.MSDNQTR.v90.chs/dv_csref/html/88247d07-bd0d-49e9-a619-45ccbbfdf0c5.htm)
  • “了解何時使用 Override 和 New 關鍵字(C# 編程指南)”:(ms-help://MS.MSDNQTR.v90.chs/dv_csref/html/323db184-b136-46fc-8839-007886e7e8b0.htm)
其次,我將以上資料中的一個例子進行簡單修改,以更好地體現出二者在使用時的區別。 using System;

namespace KeywordsOfOverrideAndNew
{
    // Define the base class
    class Car
    {
        public virtual void DescribeCar()
        {
            System.Console.WriteLine("Call the DescribeCar() defined in Car class.");
        }
    }

    // Define the derived classes
    class ConvertibleCar : Car
    {
        // Use new
        public new virtual void DescribeCar()
        {
            System.Console.WriteLine("Call the DescribeCar() defined in ConvertibleCar class.");
        }
    }
    class Minivan : Car
    {
        // Use override
        public override void DescribeCar()
        {
            System.Console.WriteLine("Call the DescribeCar() defined in Minivan class.");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Declare object type by each classes : ");
            Car car1 = new Car();
            car1.DescribeCar();
            System.Console.WriteLine("----------");
            ConvertibleCar car2 = new ConvertibleCar();
            car2.DescribeCar();
            System.Console.WriteLine("----------");
            Minivan car3 = new Minivan();
            car3.DescribeCar();
            System.Console.WriteLine("----------");

          &n

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved