重载与重写的区别
Posted anke-z
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重载与重写的区别相关的知识,希望对你有一定的参考价值。
重载(overload):方法名称一样,参数列表【不一样】。
如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写(override) 概念: 子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。 声明不变,重新实现 特点: 创建的是子类对象,则优先用子类方法。 重写(override):方法的名称一样,参数列表【也一样】。也叫覆盖、复写
注意事项
子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样
@override:写在方法前面,用来检测是不是有效的正确覆盖重写
这个注释就算不写,只要满足要求,也是正确的覆盖重写
子方法的返回值必须【小于等于】父方法的返回值范围。
小扩展提示:java.lang.Object类是所有类的公共最高父类(祖宗类),java.lang.String就是object的子类
子类方法的权限必须【大于等于】父类方法的权限修饰符
小扩展提示:public > protected > (defoult) 什么都不写>private
备注:(default)不是关键字default,而是什么都不写,留空。 /* 重写(override):方法的名称一样,参数列表【也一样】。也叫覆盖、复写 / public class Fu{ public void method(){ System.out.println("Fu show"); } } ? public class Zi extends Fu{ public void method(){ System.out.println("Zi show"); } } ? public static void main(String[] args){ Zi zi = new Zi(); zi.method();//zi show } ? / 重载(overload):方法名称一样,参数列表【不一样】。 */ public void bark(){ System.out.println("woof"); } public void bark(int num){ for(int i = 0;i<num;i++){ System.out.println("woof"); } } 小结: 重写(override):方法名参数都一样。 重载(overload):方法名相同,参数不同。
以上是关于重载与重写的区别的主要内容,如果未能解决你的问题,请参考以下文章
重写(覆盖,Override)和重载(Overload)的区别