首页 > 编程语言 >C#实现多态的几种

C#实现多态的几种

时间:2024-09-14 15:49:20浏览次数:1  
标签:C# 子类 void 多态 几种 父类 重写 public

C#实现多态的几种,转载地址https://www.cnblogs.com/Jerry9521/p/16246870.html

一:多态的理解 父类类型和子类类型可以使用同一个(方法名的)方法而输出不同的结果;例如父类可以使用虚函数,子类可以选择重写虚函数(或者不重写),子类对象调用方法的时候可以选择使用父类中的虚方法或者子类中重写的方法; 下面是微软给出的官方文档:https://docs.microsoft.com/zh

一:多态的理解

父类类型和子类类型可以使用同一个(方法名的)方法而输出不同的结果;例如父类可以使用虚函数,子类可以选择重写虚函数(或者不重写),子类对象调用方法的时候可以选择使用父类中的虚方法或者子类中重写的方法;

下面是微软给出的官方文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/fundamentals/object-oriented/polymorphism

二:多态的实现.

1、里氏转换:

1    class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             Animal animal1 = new Animal();
 6             Animal animal2 = new Dog();
 7             animal1.Shou();
 8             animal2.Shou();
 9             Console.ReadKey();
10         }
11     }
12 
13     public class Animal
14     {
15         public virtual void Shou()
16         {
17             Console.WriteLine("动物在发声");
18         }
19     }
20     public class Dog:Animal
21     {
22         public override void Shou()
23         {
24             Console.WriteLine("小狗汪汪汪");
25         }
26     }

/* Output:


动物在发声  
小狗汪汪汪

*/

2、接口实现:


1     public interface ICar
 2     {
 3         void Run();
 4     }
 5 
 6     public class Suv : ICar
 7     {
 8         public void Run()
 9         {
10             Console.WriteLine("SUV汽车跑");
11         }
12     }
13 
14    class Program
15     {
16         static void Main(string[] args)
17         {
18             ICar car = new Suv();
19             car.Run();
20         }
21     }

    /*
       output: SUV汽车跑
      */

标签:C#,子类,void,多态,几种,父类,重写,public
From: https://www.cnblogs.com/SuperRight/p/18414167

相关文章

  • constexpr声明 常量表达式
     constexpr是C++中用于声明常量表达式的关键字,表示一个变量或函数的值在编译时就可以确定,而不是在运行时计算。这对优化非常有用,因为编译器可以直接将结果嵌入到程序中,减少运行时的开销。通俗解释:变量篇:如果你有一个constexpr变量,它的值在编译时就已经固定好......
  • docker安装运行kafka单机版
    这里我们安装一下kafka的单机版,由于kafka是基于zk进行管理的,如果我们没有安装过zk的话,需要进行安装好zk再安装kafka,当然如果已经安装过了,那就没必要安装了。我们可以执行dockerimages命令查看我们的zk镜像是否已经存在了。执行的主要的流程如下所示:1.docker拉取zookeeper镜像......
  • Docker 华为云镜像加速器配置
    ​​操作说明1.安装/升级容器引擎客户端推荐安装1.11.2以上版本的容器引擎客户端2.加速器地址访问华为云容器镜像服务:https://console.huaweicloud.com/swr/获取加速器地址https://xxxxxxxxx.mirror.swr.myhuaweicloud.com3.配置镜像加速器针对容器引擎客户端......
  • Managed Debugging Assistant 'ContextSwitchDeadlock' : 'The CLR has been unable t
    ManagedDebuggingAssistant'ContextSwitchDeadlock':'TheCLRhasbeenunabletotransitionfromCOMcontext0x28ab560toCOMcontext0x28ab4a8for60seconds.Thethreadthatownsthedestinationcontext/apartmentismostlikelyeitherdo......
  • Vue3中组件通信的几种方式
    Vue3组件通信和Vue2的区别:移出事件总线,使用mitt代替。vuex换成了pinia。把.sync优化到了v-model里面了。把$listeners所有的东西,合并到$attrs中了。$children被砍掉了。【1】props概述:props是使用频率最高的一种通信方式,常用与:父↔子。若父传子:属性值是非函数。若子传父:属性......
  • # Docker 私有仓库搭建教程
    Docker私有仓库是用于存储和管理Docker镜像的私有平台,对于企业来说,搭建私有仓库可以提高镜像的安全性和访问速度。本文将介绍几种搭建Docker私有仓库的方法。一、搭建Docker私有仓库的几种方式1.使用Docker官方Registry镜像Docker官方提供了一个用于构建私有镜......
  • Vue3中路由传参的几种方式实践
    【1】RouterLink+query父组件脚本如下:<scriptsetuplang="ts"name="News">import{reactive}from'vue'import{RouterView,RouterLink}from'vue-router'constnewsList=reactive([{id:'asfdtrfay01',......
  • 【VMware vCenter】vCenter Server 各版本证书有效期及过期解决办法。
    这篇(VMwarevCenterServer(VCSA)5.5版本证书过期问题处理过程。)文章阐述了有关vCenterServer证书过期的处理过程,整个过程相对来说比较复杂并且有的地方可能也没有说清楚,因此我想在此篇文章中重新做一个针对vCenterServer证书相关的汇总,以方便有需要的朋友进行查阅和参考......
  • 可筛选的课程表设计excel表格@在线写作共享表格课程表设计模板参考
    文章目录abstract表格任务1.时间段与课次安排2.课程种类多样3.教师与教室安排4.课程颜色编码5.课表标注参考方案:样式预览全表添加不影响筛选列的跨列显示内容方案1方案2(pass)针对指定老师筛选并生成课表......
  • Electric Power
    PowerHowBatteriesWork电池提供给外面稳定的电压氧化反应,电压会逐渐减少,知道不能给设备供电。USBPD(PowerDelivery)ref:https://www.usbzh.com/article/detail-479.htmlUSBTypesTypeA,TypeBvsTypeCTypeC:reversiblebi-directionalpowercapabilities......