成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#改寫方法學習筆記

開發 后端
這里介紹C#改寫方法,面向對象設計的重要原則就是多態性。不要理會高深的理論,多態性意味著:當基類程序員已設計好用于改寫的方法時,在派生類中,你就可以重定義(改寫)基類的方法。

C#改寫方法

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

  1. virtual void CanBOverridden() 

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

  1. override void CanBOverridden() 

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

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

  1. ((BaseClass)DerivedClassInstance)。CanBOverridden(); 

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

  1. using System;  
  2. class Triangle  
  3. {  
  4. public virtual double ComputeArea(int a, int b, int c)  
  5. {  
  6. // Heronian formula  
  7. double s = (a + b + c) / 2.0;  
  8. double dArea = Math.Sqrt(s*(s-a)*(s-b)*(s-c));  
  9. return dArea;  
  10. }  
  11. }  
  12. class RightAngledTriangle:Triangle  
  13. {  
  14. public override double ComputeArea(int a, int b, int c)  
  15. {  
  16. double dArea = a*b/2.0;  
  17. return dArea;  
  18. }  
  19. }  
  20. class TriangleTestApp  
  21. {  
  22. public static void Main()  
  23. {  
  24. Triangle tri = new Triangle();  
  25. Console.WriteLine(tri.ComputeArea(2, 5, 6));  
  26. RightAngledTriangle rat = new RightAngledTriangle();  
  27. Console.WriteLine(rat.ComputeArea(3, 4, 5));  
  28. }  

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

我漏了解釋第14行:

class RightAngledTriangle : Triangle

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

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

  1. class RightAngledTriangle:Triangle  
  2. {  
  3. public override double ComputeArea(int a, int b, int c)  
  4. {  
  5. const double dEpsilon = 0.0001;  
  6. double dArea = 0;  
  7. if (Math.Abs((a*a + b*b - c*c)) > dEpsilon)  
  8. {  
  9. dArea = base.ComputeArea(a,b,c);  
  10. }  
  11. else  
  12. {  
  13. dArea = a*b/2.0;  
  14. }  
  15. return dArea;  
  16. }  

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

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

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

【編輯推薦】

  1. 介紹Mono C#編譯器
  2. C#運算符重載學習總結
  3. 概述C#語言的結構體
  4. C#遺傳算法學習筆記
  5. 討論C#分部方法
責任編輯:佚名 來源: 51CTO.com
相關推薦

2009-08-21 18:01:32

C#匿名方法

2009-08-12 17:32:44

C#反射方法

2009-08-31 16:51:11

C# Main()方法

2009-08-27 09:27:49

C#擴展方法

2009-08-14 09:41:03

C#遺傳算法

2009-08-12 09:28:36

C# WiteOne

2009-08-13 18:21:52

C#學習筆記

2009-08-20 15:02:57

C# If語句

2009-08-12 15:50:40

C# ListBox

2009-08-24 15:46:46

C# SmartPho

2009-08-26 10:48:44

C# SQL命令

2009-08-31 15:27:33

C# TreeView

2009-08-21 17:53:28

C#查詢結果

2009-08-24 14:30:49

C# WMI封裝

2009-08-25 15:26:03

C#調用ImOK

2009-08-12 10:46:54

C#命名空間

2009-12-03 09:59:34

2009-08-14 15:54:12

C#編程語言

2009-09-01 11:28:32

C#使用函數重載

2009-08-19 15:59:24

C#參數類型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩波多野结衣 | 国产精品3区| 99视频在线看 | 免费看一级毛片 | 亚洲日韩第一页 | 亚洲精品女优 | 免费一区| 欧美日韩国产精品一区 | 亚洲欧美日本在线 | 一级毛片免费视频 | 天堂资源最新在线 | 午夜影晥 | 一区二区三区免费在线观看 | 欧美午夜视频 | 精品无码久久久久国产 | 午夜成人免费视频 | 日本字幕在线观看 | 中文字幕 国产 | 日韩淫片免费看 | 成人影院网站ww555久久精品 | 国产精品极品美女在线观看免费 | 久久久久国产精品午夜一区 | 国产一区二区不卡 | www.三级 | 麻豆av免费观看 | 真人女人一级毛片免费播放 | www.色午夜.com | 午夜国产一级片 | 男人的天堂视频网站 | 97精品一区二区 | 亚洲一级av毛片 | 亚洲欧美网站 | 亚洲精品在线视频 | 免费一级片 | 99久久精品视频免费 | 午夜精品一区二区三区在线观看 | 亚洲综合大片69999 | 九九在线视频 | 国产电影一区二区 | 成人免费视频网站在线观看 | 久久久久久久久99精品 |