重载和重写的区别

引言:

   设计模式已经学过一段时间了,今天师傅给验收问了几个问题,与其说是忘了,不如说当时就没有搞明白了,欠的总是要还的,慢慢补回来,先从重载和重写的区别开始,于是又回头看了看大话并查了查资料,这才明白是什么东东!

重载(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。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 24
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值