当前位置: 首页 > news >正文

C# 中的多态

多态的定义:

        通过指向派生类的基类引用,调用虚函数,会根据引用所指向派生类的实际类型,调用派生类中的同名重写函数,便是多态。

C#中的多态可以分为两种类型:

        编译时多态(静态多态):

通过方法重载实现,方法重载指的是在同一个类当中定义多个方法名相同但参数不同的方法,编译器会根据方法调用时传入的参数来选择调用哪个方法

方法重载是在同一个类中定义多个方法名相同但参数不同的方法

C#编译器会根据传入的参数类型和数量来选择调用哪个方法

using System;
namespace 静态多态
{public class Test {  public int Add(int a, int b, int c)  {  return a + b + c;  }  public int Add(int a, int b)  {  return a + b;  }  }  class Program  {  static void Main(string[] args)  {  TestData dataClass = new TestData();int add1 = dataClass.Add(1, 2);  int add2 = dataClass.Add(1, 2, 3);Console.WriteLine("add1 :" + add1);Console.WriteLine("add2 :" + add2);  }  }  
}

        运行时多态(动态多态):

通过方法重写实现,方法重写是指子类重写父类中的虚方法,运行时会根据对象的实际类型来调用对应的重写方法。

方法重写是在子类中重新定义从父类继承的方法,为了实现方法重写,父类中的方法必须被标记为virtual,子类中的方法则用override关键字标记

using System;namespace 继承
{public class Animal{public virtual void Dog(){Console.WriteLine("准备复写");}}public class D : Animal{public override void Dog(){Console.WriteLine("复写成功");}}internal class Program{static void Main(string[] args){D dog = new D();dog.Dog();}}
}
http://www.lryc.cn/news/425507.html

相关文章:

  • 高性能内存对象缓存Memcached原理与部署
  • 【C++进阶】map与set的封装实践
  • 可视化编程-七巧低代码入门02
  • 算法:魔法字典
  • html+css 实现hover 翻转按钮
  • ETL程序员如何平衡日常编码工作与提升式学习
  • 被嫌弃的35岁程序员,竟找到了职业的新出路:PMP项目管理
  • 跟李沐学AI:目标检测、锚框
  • 【鸿蒙学习】HarmonyOS应用开发者基础 - 构建更加丰富的页面(一)
  • 机器学习深度学习中的Warmup技术是什么?
  • ECMAScript6中的模块:export导出、import导入
  • mysql写个分区表
  • Hystrix——服务容错保护库
  • 【区块链+金融服务】河北股权交易所综合金融服务平台 | FISCO BCOS应用案例
  • [图解]需要≠需求-《分析模式》漫谈
  • 刷到好听的音频怎么办
  • 怎么在网络攻击中屹立不倒
  • 详解 Python 中的面向对象编程(2)
  • 数据结构-线性表-顺序表
  • AI绘画大模型-StableDiffusion最强模型sd3(本地安装方法)
  • SpringBoot调用外部接口的几种方式
  • MySQL:information_schema查找某个表的主键是否在数据的其他位置出现之二
  • Linux进程和计划任务管理
  • 【Angular18】封装自定义组件
  • 【流媒体】RTMPDump—RTMP_ConnectStream(创建流连接)
  • MySQL学习3之锁机制
  • 2004-2023年上市公司过度负债数据(含原始数据+计算结果)
  • [机器学习]--KNN算法(K邻近算法)
  • 跨平台控制神器Escrcpy,您的智能生活助手
  • AR 眼镜之-开关机定制-实现方案