Overriding与Overloading(重写与重载)

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

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

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

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

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

        Overloading是一种静态多态:

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

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

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

        Overload的规则:

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

扫描二维码关注公众号,回复: 1652335 查看本文章

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

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

        d.    可以声明异常。

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

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


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




猜你喜欢

转载自blog.csdn.net/qq_38969070/article/details/80723666