C#方法重写全面介绍

开发 后端
这里介绍C#方法重写,派生类中要被C#方法重写是用 virtual 修饰符声明的。而在派生类中,已被C#方法重写用 override 修饰符声明。

C#语言有很多值得学习的地方,这里我们主要介绍C#方法重写,包括介绍 virtual 修饰符和override 修饰符等方面。

C#方法重写

通过为声明的方法提供新的实现,派生类可以重写基类的方法。Java 和 C# 之间的一个重要区别在于,Java 方法在默认情况下标记为虚方法,而在 C# 中,必须使用 virtual 修饰符才能将方法显式标记为虚方法。可以采用大致相同的方式重写属性访问器以及方法。

派生类中要被C#方法重写是用 virtual 修饰符声明的。而在派生类中,已被C#方法重写用 override 修饰符声明。

override 修饰符表示派生类的方法或属性,这个派生类代替基类中具有相同的名称和签名的类。要被重写的基方法必须声明为 virtual、abstract 或 override:以这种方式重写非虚方法或静态方法是不可能的 — 请参见关于此问题的下一部分。已被C#方法重写或属性和重写方法或属性必须具有相同的访问级修饰符。

下面的示例显示了一个称为 StepUp 的虚方法,它是在派生类中用 override 修饰符重写的:

  1. using System;  
  2. public class CountClass  
  3. {  
  4. public int count;  
  5.  
  6. // Constructor  
  7. public CountClass(int startValue)  
  8. {  
  9. count = startValue;  
  10. }  
  11.  
  12. public virtual int StepUp()  
  13. {  
  14. return ++count;  
  15. }  
  16. }  
  17.  
  18. class Count100Class : CountClass  
  19. {  
  20. // Constructor  
  21. public Count100Class(int x) : base(x)  
  22. {  
  23. }  
  24.  
  25. public override int StepUp()  
  26. {  
  27. return ((base.count) + 100);  
  28. }  
  29.  
  30. public static void Main()  
  31. {  
  32. CountClass counter = new CountClass(10);  
  33. CountClass bigCounter = new Count100Class(10);  
  34. Console.WriteLine("Value of count in base class = {0}",  
  35. counter.StepUp());  
  36. Console.WriteLine("Value of count in derived class = {0}",  
  37. bigCounter.StepUp());  
  38. }  

当我们运行这段代码时,会发现派生类的构造函数使用基类中给出的方法体,这使得我们在不复制该代码的情况下就可以初始化 count 成员。下面是我们得到的输出结果:

【编辑推荐】

  1. C# SystemMenu类介绍
  2. C# VSProject对象基础介绍
  3. C#创建Web应用程序项目剖析
  4. C#调用Windows服务项目基础描述
  5. C#建立项目简单分析
责任编辑:佚名 来源: chinaitlab
相关推荐

2009-08-07 17:45:29

C#预处理

2009-08-03 17:12:40

C#指针操作

2009-09-01 10:20:28

C#多种语句

2009-07-31 15:52:47

C#常用函数

2009-08-11 15:17:12

C#基础知识

2009-08-14 16:01:22

C#面向对象

2009-08-20 16:25:59

C# 匿名方法

2009-08-14 17:27:56

C#方法参数

2009-08-25 17:15:50

C#隐藏C#重写C#重载

2020-02-28 09:00:00

ObjectC#编程语言

2009-08-05 15:04:14

C# dll注入

2009-08-24 17:46:54

C#创建XML文档

2009-09-04 11:19:40

C#数字格式化

2009-08-12 18:35:36

C# ArrayLis

2009-08-28 17:01:43

C#构造函数

2009-08-05 16:29:18

C#调用C++动态链接

2009-09-18 10:45:31

C#数组操作

2009-08-11 14:57:11

比较C#和Java

2009-09-08 16:58:24

c#checklist

2009-08-25 10:24:29

C# delegate
点赞
收藏

51CTO技术栈公众号