程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 深刻懂得C#中new、override、virtual症結字的差別

深刻懂得C#中new、override、virtual症結字的差別

編輯:C#入門知識

深刻懂得C#中new、override、virtual症結字的差別。本站提示廣大學習愛好者:(深刻懂得C#中new、override、virtual症結字的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻懂得C#中new、override、virtual症結字的差別正文


OO思惟如今曾經在軟件開辟項目中普遍運用,個中最主要的一個特征就是繼續,比來偶簡略的溫習了下在C#中觸及到繼續這個特征時,所須要用到的症結字,個中有一些症結點,專程整頓出來,便利年夜家查閱。

1、在C#中,new這個症結字應用頻率異常高,重要有3個功效:   

a) 作為運算符用來創立一個對象和挪用結構函數。

b) 作為潤飾符。

c) 用於在泛型聲明中束縛能夠用作類型參數的參數的類型。

在本文中,只詳細引見new作為潤飾符的感化,在用作潤飾符時,new症結字可以在派生類中隱蔽基類的辦法,也就說在應用派生類的辦法是挪用的辦法是New症結字新界說出來的辦法,而不是基類的辦法。在不應用New症結字來隱蔽基類辦法也是可以的,編譯器會湧現一個正告,提醒假如成心去隱蔽基類的辦法,請應用New症結字潤飾。

這裡有個留意事項就是New和Override這兩個症結字是互斥的。弗成以同時應用。

2、Override症結字重要是供給派生類對基類辦法的新完成,重寫的基類辦法必需和Override的辦法具有雷同的簽名,此症結字弗成以用於重寫非虛辦法和靜態辦法,與其配套應用的症結字是Virtual、abstract、Override。與此同時,Override辦法還弗成以修正Virtual辦法的可拜訪性,Override辦法和Virtual辦法必需具有雷同的拜訪潤飾符,不克不及應用潤飾符 new、static、virtual 或abstract 來修正 override 辦法。

以下是一個小demo,展現了new和override的實質差別:

class Program

  {

    static void Main(string[] args)

    {     

      class1 ct1 = new class1();

      contact ct2 = new class2();

      ct1.prinf();

      ct2.prinf();

    }

  }

  abstract public class contact

  {

    public virtual void prinf()

    {

      Console.WriteLine ("這是虛辦法");

    }

  }

  public class class1 : contact

  {

    public override void prinf()

    {

      Console.WriteLine ("這是新的辦法");

    }

  }

  public class class2 : contact

  {

    public new void prinf()

    {

      Console.WriteLine ("這是另外一個新的辦法");

    }

}

此demo運轉成果為:

這是新的辦法

這是虛辦法

3、 Virtual 症結字許可在派生類中重寫這些對象,默許情形下,辦法長短虛擬的,弗成以重寫非虛辦法,virtual症結字弗成以與static、abstract、private、override一路應用。Virtual症結字又是和override慎密弗成分的,假如要完成Virtual辦法就必需要應用override或new症結字(new和override發生的機理分歧)。

總結:New症結字重要用來差別派生類和基類同名辦法的選擇成績,經由過程隱蔽基類辦法,到達使編譯器挪用准確的辦法的目標。Override重要用來對基類的辦法和虛辦法停止重寫。

以上這篇深刻懂得C#中new、override、virtual症結字的差別就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。

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