Overriding与Overloading(重写与重载)

1.    (Override)重写的函数:在继承时使用,需要完全同样的signature

        在实际执行时调用哪个方法,在run-time时决定,因此其是动态

        若在子类中调用父类的方法,可采用super关键字

2.    (Overload)重载:多个方法具有相同的名字,但有不同的参数列表或返回值类型 

        方便client调用,client可用不同的参数列表,调用同样的函数。

        Overloading是一种静态多态:

        在编译过程中,根据参数列表进行最佳匹配

        进行的是静态类型检查,编译阶段决定执行哪个方法。

        而与之相反,overridden methods则是在run-time进行dynamic checking!

        Overload的规则:

        a.     一定要有不同的参数列表 

        b.    可以有相同/不同的返回值类型 

        c.     可以有相同/不同的public/private/protected关键词修饰

        d.    可以声明异常。

        e.    可以在同一个类内重载,也可在子类中重载 

注意:overload匹配参数时,看的是引用类型,例如:


这里print的是animal而不是horse,因为其根据引用类型进行最佳匹配。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值