重载和重写的区别

本文详细介绍了面向对象编程中的方法重载(overload)和重写(override)的概念及应用规则。重载允许同一名称的方法具有不同参数类型或数量,而重写则涉及子类对父类方法的重新定义。

重载(overload):
   方法重载提供了创建同名的多个方法的能力,但这些方法需要使用不同的参数类型。

例子:关于小猫有没有起好名字的讨论


class Cat
{
    private string name=""
    public Cat(string name)
    {
        this.name=name;
     }
    //构造方法重载 
    public Cat()
    {
        this.name="无名"
     }
 
}
方法重载提供了函数可扩展的能力,如果小猫起好了名字,就用带string参数的构造方法,如果没有,就用不带参数的;如果需要分清楚猫的姓和名,可以重载一个public  Cat (string firstName,string lastName)

规则:

   在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样)

重写(override):
定义:指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中必须指明override。

格式:

 基类


public virtual void myMethod() 


子类

public override void myMethod() 


规则:

1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.
2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。
3、重写的方法的返回值必所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;
4、重写的方法须和被重写的方法的返回一致;
5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。
6、静态方法不能被重写为非静态的方法(会编译出错)。
总结:
1、学习是个反复的过程

2、不能总是盲人摸象的状态

格式指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中必须指明override。


--------------------- 
作者:吴晓如 
来源:优快云 
原文:https://blog.youkuaiyun.com/wxr15732623310/article/details/50659828 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值