c#多态(override)的使用

这篇具有很好参考价值的文章主要介绍了c#多态(override)的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方法重写(override):多态,通过父类类型对象,调用子类当中对应方法的实现。
细节:子类当中的override方法会“抹杀”父类当中对应virtual方法

不使用多态时,父类调用子类方法时,会调用父类的方法

internal class pet
    {
        public void shout()
        {
            Console.WriteLine("pet 叫");
        }

        public virtual void eat()
        {
            Console.WriteLine("pet eat food");
        }
    }
    internal class dog : pet
    {
        public new void shout()
        {
            Console.WriteLine("dog 叫");
        }

        public override void eat()
        {
            Console.WriteLine("dog eat food");
        }
    }

main方法通过里氏替换调用子类shout方法

 dog dog = new dog();
 pet pet = dog;
 pet.shout();//输出的是父类的方法 pet 叫

那如何可以,通过父类调用子类的实现呢?这就要使用多态了,方法的重写 ,父类方法使用 virtual修饰,子类同签名方法需要override修饰,如上面的eat方法。

main方法执行

 dog dog = new dog();
 pet pet = dog;
 pet.eat();//输出的是子类的eat方法 dog eat food

多态性使得代码更加灵活和可扩展,允许我们在不修改现有代码的情况下增加新的功能。它也是面向对象编程的重要特性之一,有助于实现代码的模块化和重用文章来源地址https://www.toymoban.com/news/detail-687600.html

到了这里,关于c#多态(override)的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity C#中的封装、继承和多态简单易懂的经典实例

    C#中的封装、继承和多态是面向对象编程(OOP)的三大核心特性。下面分别对这三个概念进行深入解释,并通过实例来说明它们在实际开发中的应用。 封装 (Encapsulation) 实例1: 在这个例子中, BankAccount 类封装了账户余额(balance),外部不能直接修改它,只能通过 Deposit 和

    2024年02月22日
    浏览(48)
  • 【深入浅出C#】章节 4: 面向对象编程基础:封装、继承和多态

    封装、继承和多态是面向对象编程中的核心概念,它们对于构建灵活、可扩展和可维护的软件系统至关重要。 封装(Encapsulation)通过将数据和相关操作封装在一个类中,隐藏内部实现细节,并提供公共接口来与外部进行交互。封装有助于保护数据的完整性和安全性,同时提

    2024年02月10日
    浏览(52)
  • C# 类class、继承、多态性、运算符重载,相关练习题

    34.函数重载 35.几个相同的函数  print() ,用于打印不同的数据类型。   36.基类和派生类   37.基类的初始化   38.多重继承   39.动态多态性   40.抽象性和虚方法   41.通过虚方法 area() 来计算不同形状图像的面积   42.运算符重载的实现   @www.runoob.com 

    2024年02月09日
    浏览(43)
  • Linux使用Docker完整安装Superset3,同时解决please use superset_config.py to override it报错

    接下来我们运行一些额外的程序: 生成一串复杂的字符串: nzUP0CMXcCaQI+fQ2XZIJLp1aQJLBA/bJXk/dZQFtMeicMHe/5btzRus 创建容器,并且指定用户密码: 用户密码这里可以使用:回车、回车,输入两次密码;比如设置密码为 admin 注意:如果出现如下提示( A Default SECRET_KEY was detected, please u

    2024年02月02日
    浏览(48)
  • 多态的使用

    面向对象三大特征:封装、继承、 多态     同类型的对象,表现出不同的 形态 。(对象的多种形态。) 同类型的对象,执行同一个行为,会表现出不同的行为 特征 。 同一个对象,在不同时刻表现出来的不同形态 父类类型      对象名称            =           子

    2024年02月14日
    浏览(30)
  • Python中重写(override)

    Python中,有重写(override)的概念,但是没有严格意义上的重载(overload)。 类继承时,子类可以重新定义父类中已有的方法,称为重写(Override)。 在Python中,没有像其他语言(如C++)那样的函数重载(Overload)机制。函数重载是指在同一作用域内允许多个函数具有相同的名

    2024年02月02日
    浏览(51)
  • 详解@Override注解

    目录 1.是什么 2.为什么用 3.举例说明 1)示例一 2)示例二 3)示例三 @Override注解是伪代码,用于表示被标注的方法是一个重写方法。 @Override注解,只能用于标记方法,并且它只在编译期生效,不会保留在class文件中。 @Override 检查该方法是否是重写方法。如果发现其父类,或

    2024年02月14日
    浏览(35)
  • Java注解——@Override注解(详解1)

    1、注解: 注解是 JDK 1.5 的特性 注解是给编译器或 JVM 看的,编译器或 JVM 可以根据注解来完成相应的功能。 或者叫注释类型,英文是:Annotation 注解Annotation是一种引用数据类型。编译之后也是生成xxx.class文件。 注解的语法格式: 【修饰符列表】 @interface 注解类型名{ } publ

    2024年02月03日
    浏览(44)
  • Java重写(Override)&重载(Overload)

    目录 重写(Override)概述 重写(Override)讲解 重载(Overload)概述 重载(Override)讲解 Java面向对象编程中的重写(override)指的是子类可以重写其父类中的非private方法,使得子类在调用该方法时会使用自己的实现而不是父类的实现。 定义一个名为 Animal 的父类和一个名为 Cat 的子类,其

    2023年04月09日
    浏览(49)
  • java重写(@Override)介绍及实例说明

    方法的重写(override)是封装的特性之一。在子类中可以根据需要对基类中继承来的方法进行重写。重载和重写没有任何关系。 作用:通过重写,子类既可以继承父类的东西,又可以灵活的扩充。 1.@override注解是告诉编译器,下面的方法是重写父类的方法 2.编译器可以给你验

    2024年02月03日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包