91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#中重寫及覆蓋的區別有哪些

發布時間:2023-03-28 11:57:49 來源:億速云 閱讀:289 作者:iii 欄目:開發技術

這篇文章主要介紹了C#中重寫及覆蓋的區別有哪些的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇C#中重寫及覆蓋的區別有哪些文章都會有所收獲,下面我們一起來看看吧。

1. 重寫和覆蓋的定義

1.1 重寫(override)的定義

在C#中,用override關鍵字來重寫一個父類中的虛方法或抽象方法。override關鍵字用于指示編譯器,我要用派生類中的一個方法,重寫基類中的同名方法。通過重寫基類中的方法,可以實現多態性。有關重寫與虛方法和抽象方法的詳細示例,可移步C#虛方法和抽象方法示例。

override關鍵字的語法如下:

public override returnType MethodName(ParameterList)
{
    // 方法實現
}

其中,public表示訪問修飾符;override表示重寫虛方法或抽象方法;returnType表示方法的返回類型;MethodName表示方法名稱;ParameterList表示方法的參數列表。

需要注意的是,重寫方法的訪問修飾符必須與被重寫方法的訪問修飾符相同或更為寬松。

1.2 覆蓋(new)的定義

在C#中,用new關鍵字來覆蓋一個父類中的成員方法或成員變量。new關鍵字用于指示編譯器,派生類中的一個方法或變量將隱藏基類中的同名方法或變量,從而改變了繼承體系中的原有布局關系。

new關鍵字的語法如下:

new returnType MemberName(ParameterList)
{
    // 成員實現
}

其中,returnType表示成員的返回類型;MemberName表示成員的名稱;ParameterList表示成員的參數列表。

2. 兩者的區別及示例

下面是一個示例:

//父類
  public class FatherClass
  {
    public virtual string GetName()
    {
      return "我是父類中的虛擬方法";
    }
  }
  //子類1
  public class SonClass1 : FatherClass
  {
    public override string GetName()
    {
      return "我是子類1中的重寫方法";
    }
  }
  //子類2
  public class SonClass2 : FatherClass
  {
    public new string GetName()
    {
      return "我是子類2中的覆蓋方法";
    }
  }

隨后通過程序入口函數調用:

 public class Program
  {
    public static void Main(string[] args)
    {
      FatherClass fatherClass = new FatherClass();
      Console.Write("直接調用父類中的虛方法:");
      Console.WriteLine(fatherClass.GetName());

      SonClass1 s1 = new SonClass1();
      Console.Write("直接調用子類1中的重寫方法:");
      Console.WriteLine(s1.GetName());

      SonClass2 s2 = new SonClass2();
      Console.Write("直接調用子類2中的覆蓋方法:");
      Console.WriteLine(s2.GetName());

      FatherClass f1 = new SonClass1();
      Console.Write("聲明父類,調用子類1中的重寫方法:");
      Console.WriteLine(f1.GetName());

      FatherClass f2 = new SonClass2();
      Console.Write("聲明父類,調用子類2中的覆蓋方法:");
      Console.WriteLine(f2.GetName());
    }
  }

運行程序,得到的結果如下:

直接調用父類中的虛方法:我是父類中的虛擬方法
直接調用子類1中的重寫方法:我是子類1中的重寫方法
直接調用子類2中的覆蓋方法:我是子類2中的覆蓋方法

聲明父類,調用子類1中的重寫方法:我是子類1中的重寫方法
聲明父類,調用子類2中的覆蓋方法:我是父類中的虛擬方法

關于“C#中重寫及覆蓋的區別有哪些”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“C#中重寫及覆蓋的區別有哪些”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东海县| 锡林郭勒盟| 湟源县| 革吉县| 万山特区| 云安县| 苗栗县| 双柏县| 芒康县| 安新县| 中牟县| 兖州市| 应城市| 射阳县| 乐都县| 常州市| 阿克陶县| 石屏县| 桐城市| 镇安县| 闽清县| 南岸区| 青海省| 临沧市| 沙河市| 东至县| 当涂县| 武夷山市| 冕宁县| 安康市| 班玛县| 延川县| 武威市| 神农架林区| 融水| 新疆| 余姚市| 静乐县| 开原市| 清水县| 金华市|