详解Java中方法重写与重载的区别(面试高频问点)
Java中方法重写与重载的区别
|
重 写 |
重 载 |
|
子类方法对父类方法的覆盖 |
同一个类中同名方法的重载(同一类包括从父类继承的方法) |
|
方法名相同且参数个数类型顺序相同 |
参数个数或类型顺序至少满足一点不同 |
|
只允许访问权限更宽松 |
访问权限任意 |
|
返回值类型若是基本类型则不允许不同;若是复合类型则在子类与父类间必须至少存在继承关系 |
返回值类型任意 |
|
final修饰的父类,子类不能重写,反之可以 |
final任意 |
|
静态方法与实例方法不能互相重写 |
任意 |
|
构造方法不能被重写 |
构造方法可以重载,任意 |
一句话描述清楚:
- 重写注解:@Override
- 重载注解:@Overload
方法的重载是方法名相同,方法返回值和修饰符可以不同,方法的形式参数增加或减少,同名方法根据不同传参来处理不同逻辑
方法的重写是方法名相同,方法返回值相同,修饰符相同.方法的形式参数相同,方法体被重写,方法体中的代码功能有所不同,子类对父类方法重新改造,外部样子不能改变,内部逻辑可以改变
代码示例:
方法重写
public void hello(String name){
System.out.println("你好" + name);
}
//重写了hello方法,方法体中的代码实现的功能已改变
public void hello(String name){
System.out.println("你好,我叫" + name);
}
方法重载
public void hello(String name){
System.out.println("你好" + name);
}
//形式参数不同,实现的逻辑不同
public void hello(String name,int age){
System.out.println("你好我叫" + name + "今年" + age + "岁");
}
//形式参数不同,实现的逻辑不同,并且方法返回值不同,且修饰符不同
private String hello(String name,int age,String sex){
return "你好我叫" + name + "今年" + age + "岁"+"性别"+sex;
}
到此这篇关于Java中方法重写与重载的区别(面试高频问点)的文章就介绍到这了,更多相关Java中方法重写与重载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
这篇文章主要介绍了Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture,本文直接给出实现代码,代码中包含详细注释,需要的朋友可以参考下2015-06-06
SpringBoot开发案例 分布式集群共享Session详解
这篇文章主要介绍了SpringBoot开发案例 分布式集群共享Session详解,在分布式系统中,为了提升系统性能,通常会对单体项目进行拆分,分解成多个基于功能的微服务,可能还会对单个微服务进行水平扩展,保证服务高可用,需要的朋友可以参考下2019-07-07
springBoot整合shiro如何解决读取不到@value值问题
这篇文章主要介绍了springBoot整合shiro如何解决读取不到@value值问题,具有很好的参考价值,希望对大家有所帮助,2023-08-08
Spring中使用LocalDateTime、LocalDate等参数作为入参
这篇文章主要介绍了Spring中使用LocalDateTime、LocalDate等参数作为入参,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-12-12
Java报错Java.text.ParseException的解决方法汇总
在Java开发的复杂世界中,错误处理是开发者必须面对的关键挑战之一,其中,Java.text.ParseException就像一个隐藏在代码丛林中的陷阱,常常让开发者们陷入困惑,本文给大家介绍了Java报错Java.text.ParseException的解决方法,需要的朋友可以参考下2024-10-10


最新评论