C#中多态、重载、重写区别分析

作者:shichen2014 时间:2022-06-27 22:49:55 

本文实例总结了C#中多态、重载与重写的概念与区别。对于初学C#的朋友来说有不错的参考价值。分享给大家供大家参考。具体分析如下:

重写:是指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中必须指明override。

格式如下:

1.在基类中:


public virtual void myMethod()
{
}

2.在子类中:


public override void myMethod()
{
}

重写以后,用基类对象和子类对象访问myMethod()方法,结果都是访问在子类中重新定义的方法,基类的方法相当于被覆盖掉了。

重载:用于在给定了参数列表和一组候选函数成员的情况下,选择一个最佳函数成员来实施调用。


public void test(int x,int y){}

public void test(int x,ref int y){}

public void test(int x,int y,string a){}

重载的特征:

I.方法名必须相同

II.参数列表必须不相同,与参数列表的顺序无关

III.返回值类型可以不相同

但如果有泛型,就要注意了!

多态:c#的多态性主要体现在类的继承上:

子类继承父类的时候,可能出现同名但方法定义不同的情况,
所以在子类中会将原方法覆盖,实现自身的要求.

需要注意的地方有两点:

①.可以在子类中被重写的方法一定要被标记成virtual(虚拟), abstract(抽象), override(重写)标记为virtual 和abstract 的函数就是为了重写而创建的,标记为override的函数本身是由前两种函数重写而来的,所以它可以被重写也是顺理成章的了;

②.重写的函数必须在子类中出现,而且任何一个父类的函数在其一个子类中只能被重写一次。(这一点很好理解,当你要重写两次时,该子类中将定义两个返回类型,方法名称 和参数列表都相同的函数,这肯定是不可能的)。

相信本文所述对大家C#程序设计的学习有一定的参考借鉴价值。

标签:C#,多态,重载,重写
0
投稿

猜你喜欢

  • Elasticsearch学习之Terms set 查询

    2021-12-01 01:52:19
  • SpringBoot的异常处理流程是什么样的?

    2021-07-09 17:54:40
  • Java字节流和字符流总结IO流!

    2023-10-21 13:06:02
  • C#中List集合使用Max()方法查找到最大值的实例

    2023-12-01 08:03:32
  • Java利用TreeUtils工具类实现列表转树

    2021-10-02 03:28:00
  • java读写二进制文件的解决方法

    2022-08-03 14:45:55
  • Android解决viewpager嵌套滑动冲突并保留侧滑菜单功能

    2023-09-05 11:36:33
  • DataBinding onClick的七种点击方式

    2021-12-08 01:23:22
  • 深入理解java final不可变性

    2023-02-11 20:17:27
  • SpringBoot消息国际化配置实现过程解析

    2023-05-16 01:19:22
  • Java编程中使用XFire框架调用WebService程序接口

    2023-11-06 20:16:33
  • java中transient关键字用法分析

    2022-01-22 04:27:05
  • C#获取Windows进程监听的TCP/UDP端口实例

    2021-11-20 13:06:21
  • JAVA技术实现上传下载文件到FTP服务器(完整)

    2023-08-26 15:35:43
  • Java8新特性之重复注解与类型注解详解

    2023-01-16 16:18:38
  • java并发编程包JUC线程同步CyclicBarrier语法示例

    2023-01-18 07:44:58
  • 如何动态修改JavaBean中注解的参数值

    2022-09-03 04:08:34
  • C#模式画刷HatchBrush用法实例

    2021-10-01 08:59:45
  • Spring+MyBatis实现数据读写分离的实例代码

    2021-08-31 04:34:48
  • C#中float的取值范围和精度分析

    2023-05-19 01:03:21
  • asp之家 软件编程 m.aspxhome.com