C#中,重载(overload) 重写(override)的应用说明

news/2024/10/17 21:27:17/

一.重载(overload)& 重写(override)定义说明

1.重载(overload)& 重写(override)

1.1重载(overload):指的是在同一个类中定义多个具有相同名称但参数列表不同的方法。通过参数列表的不同,编译器能够区分这些方法,并根据调用时传递的参数类型或数量来选择合适的方法进行调用。重载方法可以有不同的返回类型,但不能仅仅依靠返回类型的不同来区分方法。;

1.2重写(override):指的是子类可以重写(覆盖)父类中的虚方法或抽象方法,使得子类可以根据自己的需求对该方法进行定制化的实现。重写方法必须具有与父类中被重写的方法相同的签名(方法名称、参数列表和返回类型),并且需要使用关键字override来标记。。

二.重载(overload)& 重写(override)应用示例说明

2.1.重载(overload)

下列代码中,Add方法被重载了两次,一次用于整数,另一次用于双精度数,源码如下:

public class Calculator
{
    public int Add(int num1, int num2)
    {
        return num1 + num2;
    }
 
    public double Add(double num1, double num2)
    {
        return num1 + num2;
    }
}

 2.2函数重写(Overriding)

下列代码中,Speak方法在Animal类中被声明为虚拟方法,然后在Dog类中被重写。当Dog类的实例调用Speak方法时,将调用Dog类中的版本,而不是Animal类中的版本,源码如下:

public class Animal
{
    public virtual void Speak()
    {
        Console.WriteLine("Animal is speaking");
    }
}
 
public class Dog : Animal
{
    public override void Speak()
    {
        Console.WriteLine("Woof! Woof!");
    }

 三.重载(overload)& 重写(override)特点说明

3.1重载(overload)特点

  •  方法名必须相同;
  •  参数列表必须不相同;
  •  返回值类型可以不相同;

也就是常说的:两必须一可以。

 3.2重写(override)特点

  • 相同的方法名
  • 相同的参数列表
  • 相同的返回值

 也就是常说的:三个相同。

四.注意:函数重载和重写是C#多态性的两种形式,多态性是允许同名的不同行为。


http://www.ppmy.cn/news/1539809.html

相关文章

SpringBoot发送邮箱

一、导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId> </dependency> 二、添加配置 application.yml文件 将username修改为自己的邮箱&#xff0c;password修改为…

【JavaScript】关于使用JS对word文档实现预览的一些思考

文章目录 mammothdocx4js mammoth 官网地址&#xff1a;https://github.com/mwilliamson/mammoth.js#readme 安装mammoth&#xff1a; npm i mammoth -S我们可以安装mammoth来实现上传的word文件的在线预览&#xff0c;我们以element的上传组件为示例&#xff1a; <temp…

Vue3子组件watch无法监听父组件传递的属性值

Vue3子组件watch无法监听父组件传递的属性值 1 问题描述2 引发原因3 解决方法 1 问题描述 假设子组件 ChildComponent 中有个属性a&#xff0c;默认值为 0&#xff0c;并且通过侦听器 watch 监听其数值变化。在父组件 ParentComponent 中调用子组件并将属性a的值赋为1传递给子…

finalshell连接navicat数据库

一、安装mysql数据库 这个安装在另外一篇里 超详细的finalshell安装数据库以及数据库的基本操作-CSDN博客https://blog.csdn.net/cfjbcg/article/details/142990671 二、连接 说明root这个用户连接&#xff0c;是有权限的限制的----》修改权限 use mysql pdate user set hos…

MySQL 篇-深入了解 InnoDB 引擎的逻辑存储结构、架构、事务原理、MVCC 原理分析(RC 级别、RR 级别)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 InnoDB 引擎 - 逻辑存储结构 2.0 InnoDB 引擎 - 架构 2.1 InnoDB 引擎 - 内存结构 2.2 InnoDB 引擎 - 磁盘结构 2.3 InnoDB 引擎 - 后台线程 3.0 InnoDB 引擎 - 事…

Java中字符串.split分割转List<String>判空问题

第一种分割直接分割&#xff0c;如果cph字符串为空&#xff0c;分割后cphList会>0 List<String> cphList Arrays.asList(cph.split(","));第二种判空后分割&#xff0c;如果cph字符串为空&#xff0c;判空后再分割cphList会0 List<String> cphList…

基于SpringBoot+Vue+Uniapp家具购物小程序的设计与实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而…

Jenkins构建Springboot项目显示Lombok依赖不起作用

报错&#xff1a; 解决&#xff1a; 当时我的maven是从windows拉进来的&#xff0c;忘记改仓库路径&#xff08;还是D盘什么什么的&#xff09;&#xff0c;所以换一下仓库路径就可以了 再次构建查看&#xff1a;