c#:浅析方法重载和重写

c#:浅析方法重载和重写

本篇文章主要分析c#中方法重载和方法重写的一些含义、用法、示例以及区别等……希望能够帮到您!

一重载(overload)

1、描述

​ 在面向对象的语言中,允许我们在同一个类中定义多个方法名相同、参数列表(参数类型,参数个数)不同的方法,这样的形式我们称为方法重载。调用时编译器会根据实际传入参数的形式,选择与其匹配的方法执行。

2、构造函数重载的条件

​ (1)**前提:**在一个类中

​ (2)**其次:**构造函数方法名相同

​ (3)构造函数参数(形参)列表不同(参数类型不同,参数个数不同)以及

​ (4)**注意:两个方法中的参数类型、参数数量相同时,顺序不同是不能造成重载的,反而会报错

正确示例:

在这里插入图片描述

在这里插入图片描述

错误示例:

在这里插入图片描述

3、方法重载的条件

​ (1)**前提:**在同一个类中

​ (2)**其次:**方法名相同

​ (3)参数(形式参数)列表不同(参数的类型不同、参数的个数不同)

​ (4)返回值类型可以不同,也可以相同

正确示例:

在这里插入图片描述

class Person
    {
     //定义的字段
        private string name;
        private string sex;
        private string xm;
        private int age;
        private double height;
        private double weight;
    //方法重载开始 	一共4个方法同名方法
        public void Name(){}
        public void Name(string name, string sex,string xm) { }
        public void Name(double height,double weight) { }
        public string Name(string name)
        {
            return this.name = name;
        }
    }

外部调用:
在这里插入图片描述
**注意:**两个方法中的参数类型、参数数量相同时,顺序不同是不能造成重载的,反而会报错

错误示例:

在这里插入图片描述

二、重写(override)

1、描述

​ 重写可以大致理解为:我觉得你的不好,我要重新弄一个推翻你的定义。重写是出现在继承中的

2、方法重写的条件

​ (1)**前提:**发生在继承关系中,是派生类重写基类的方法

​ (2)**其次:**要求修饰符、方法名、以及返回值类型相同

​ (3)重写时,基类要有使派生类重写的修饰符,而派生类也要有重写修饰符override

​ (4)重写后,派生类的方法就覆盖了基类的方法

正确示例:

//基类
  class Person
    {
        public virtual void Ak()//使用virtual使方法Ak成为虚方法
        {
            Console.WriteLine("我是基类方法Ak");
        }
    }
 class Student:Person
    {
        public override void Ak()//使用override关键字告诉程序我要重写基类的Ak方法
        {
            Console.WriteLine("我是派生类方法Ak");
        }
    }

3、两种方法使派生类重写基类方法

​ (1)abstract关键字,使基类方法称为虚方法,此时基类必须为抽象类

​ (2)virtual关键字,使基类的方法称为虚方法,本篇文章用的就是virtual关键字

需要详细了解的话,可以阅读本人的其他博客:

c#关键字—virtual浅见 以及 c#中抽象类的使用和示例,相信会对你有很大帮助

4、方法重写和重载的区别

**(1)相同点:**方法名都相同,访问修饰符相同

(2)不同点:

1、重载:是在一个类中,并且参数列表不同(参数类型、参数个数)返回值类型没有要求,不用使用关键字就可以重载

​ **2、重写:**不在一个类中,是继承关系,参数列表相同,返回值类型相同,需要使用关键字才能重写

注:从上文可以看出,方法重写的要求要比方法重载苛刻

本篇文章出于自己对c#中方法重载和方法重写的一点理解,如果有不完善的地方,或者有错误的地方,还请各位朋友能够指出,希望大家的努力都i有很大收获和成就,谢谢!

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御弟謌謌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值