详解Java中方法重写与重载的区别(面试高频问点)
Java中方法重写与重载的区别
重写 |
重载 |
子类方法对父类方法的覆盖 |
同一个类中同名方法的重载(同一类包括从父类继承的方法) |
方法名相同且参数个数类型顺序相同 |
参数个数或类型顺序至少满足一点不同 |
只允许访问权限更宽松 |
访问权限任意 |
返回值类型若是基本类型则不允许不同;若是复合类型则在子类与父类间必须至少存在继承关系 |
返回值类型任意 |
final修饰的父类,子类不能重写,反之可以 |
final任意 |
静态方法与实例方法不能互相重写 |
任意 |
构造方法不能被重写 |
构造方法可以重载,任意 |
一句话描述清楚:
- 重写注解:@Override
- 重载注解:@Overload
方法的重载是方法名相同,方法返回值和修饰符可以不同,方法的形式参数增加或减少,同名方法根据不同传参来处理不同逻辑
方法的重写是方法名相同,方法返回值相同,修饰符相同.方法的形式参数相同,方法体被重写,方法体中的代码功能有所不同,子类对父类方法重新改造,外部样子不能改变,内部逻辑可以改变
代码示例:
方法重写
publicvoidhello(Stringname){ System.out.println("你好"+name); } //重写了hello方法,方法体中的代码实现的功能已改变 publicvoidhello(Stringname){ System.out.println("你好,我叫"+name); }
方法重载
publicvoidhello(Stringname){ System.out.println("你好"+name); } //形式参数不同,实现的逻辑不同 publicvoidhello(Stringname,intage){ System.out.println("你好我叫"+name+"今年"+age+"岁"); } //形式参数不同,实现的逻辑不同,并且方法返回值不同,且修饰符不同 privateStringhello(Stringname,intage,Stringsex){ return"你好我叫"+name+"今年"+age+"岁"+"性别"+sex; }
到此这篇关于Java中方法重写与重载的区别(面试高频问点)的文章就介绍到这了,更多相关Java中方法重写与重载内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。