中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

C#如何改寫方法

發布時間:2021-12-01 09:58:40 來源:億速云 閱讀:193 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關C#如何改寫方法的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

C#改寫方法

面向對象設計的重要原則就是多態性。不要理會高深的理論,多態性意味著:當基類程序員已設計好用于改寫的方法時,在派生類中,你就可以重定義(改寫)基類的方法。基類程序員可以用 virtual 關鍵字設計方法:

virtual void CanBOverridden()

當從基類派生時,所有你要做的就是在新方法中加入override關鍵字:

override void CanBOverridden()

當改寫一個基類的方法時,你必須明白,不能改變方法的訪問屬性——在這章的后面,你會學到更多關于訪問修飾符的知識。

除了改寫基類方法的事實外,還有另一個甚至更重要的改寫特性。當把派生類強制轉換成基類類型并接著調用虛擬方法時,被調用的是派生類的方法而不是基類的方法。

((BaseClass)DerivedClassInstance)。CanBOverridden();

為了演示虛擬方法的概念,顯示如何創建一個三角形基類,它擁有一個可以被改寫的成員方法(ComputeArea)。

using System;  class Triangle  {  public virtual double ComputeArea(int a, int b, int c)  {  // Heronian formula  double s = (a + b + c) / 2.0;  double dArea = Math.Sqrt(s*(s-a)*(s-b)*(s-c));  return dArea;  }  }  class RightAngledTriangle:Triangle  {  public override double ComputeArea(int a, int b, int c)  {  double dArea = a*b/2.0;  return dArea;  }  }  class TriangleTestApp  {  public static void Main()  {  Triangle tri = new Triangle();  Console.WriteLine(tri.ComputeArea(2, 5, 6));  RightAngledTriangle rat = new RightAngledTriangle();  Console.WriteLine(rat.ComputeArea(3, 4, 5));  }  }

基類Triangle定義了方法ComputeArea.它采用三個參數,返回一個double結果,且具有公共訪問性。從Triangle類派生出的是RightAngledTriangle,它改寫了ComputeArea 方法,并實現了自己的面積計算公式。兩個類都被實例化,且在命名為TriangleTestApp的應用類的Main() 方法中得到驗證。

我漏了解釋第14行:

class RightAngledTriangle : Triangle

在類語句中冒號(:)表示RightAngledTriangle從類 Triangle派生。那就是你所必須要做的,以讓C#知道你想把Triangle當作RightAngledTriangle的基類。

當仔細觀察直角三角形的ComputeArea方法時,你會發現第3個參數并沒有用于計算。但是,利用該參數就可以驗證是否是"直角"。

class RightAngledTriangle:Triangle  {  public override double ComputeArea(int a, int b, int c)  {  const double dEpsilon = 0.0001;  double dArea = 0;  if (Math.Abs((a*a + b*b - c*c)) > dEpsilon)  {  dArea = base.ComputeArea(a,b,c);  }  else  {  dArea = a*b/2.0;  }  return dArea;  }  }

該檢測簡單地利用了畢達哥拉斯公式,對于直角三角形,檢測結果必須為0.如果結果不為0,類就調用它基類的ComputeArea來實現。

dArea = base.ComputeArea(a,b,c);

例子的要點為:通過顯式地利用基類的資格檢查,你就能輕而易舉地調用基類實現C#改寫方法。當你需要實現其在基類中的功能,而不愿意在C#改寫方法中重復它時,這就非常有幫助。

感謝各位的閱讀!關于“C#如何改寫方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

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

AI

南昌县| 阳城县| 麻城市| 台前县| 长寿区| 连江县| 明星| 都匀市| 乌兰察布市| 巩留县| 金溪县| 高淳县| 乌兰浩特市| 汶川县| 潼南县| 汶上县| 新巴尔虎右旗| 民勤县| 布尔津县| 明星| 湘潭县| 抚宁县| 恩施市| 南宫市| 蒙城县| 灵川县| 习水县| 滦平县| 民丰县| 彰化市| 南木林县| 海原县| 贞丰县| 北碚区| 永昌县| 新沂市| 翁牛特旗| 五寨县| 敦煌市| 双桥区| 武宁县|