惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
Martin Fowler
Martin Fowler
The GitHub Blog
The GitHub Blog
B
Blog RSS Feed
U
Unit 42
阮一峰的网络日志
阮一峰的网络日志
量子位
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
云风的 BLOG
云风的 BLOG
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
L
LangChain Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园_首页
IT之家
IT之家
V
Visual Studio Blog
Y
Y Combinator Blog
Blog — PlanetScale
Blog — PlanetScale
宝玉的分享
宝玉的分享
Apple Machine Learning Research
Apple Machine Learning Research
I
InfoQ
D
Docker
V
V2EX

Java技术经验分享

生产故障处理SOP分享 | Java技术经验分享 系统稳定性建设实践总结【转载】 | Java技术经验分享 valine访问leancloud国际版异常,评论失效修复 | Java技术经验分享 匆匆忙忙的2021 | Java技术经验分享 聊一下换工作 | Java技术经验分享 IoT系列(2):WIFI设备常见配网方案介绍 | Java技术经验分享 IoT系列(1):什么是物联网 | Java技术经验分享 Java8特性2 - StreamApi | Java技术经验分享 Java8特性1 - lambda表达式&函数式接口 | Java技术经验分享 设计模式(5)-适配器模式 | Java技术经验分享 设计模式(4)-建造者模式 | Java技术经验分享 设计模式(3)-原型模式与浅拷贝和深拷贝 | Java技术经验分享 设计模式(2)-工厂模式图文介绍 | Java技术经验分享 设计模式(1)-带你了解3类8种单例模式 | Java技术经验分享 Java时间处理5---Java8中时区相关类库介绍 | Java技术经验分享 Java时间处理4---Java8中LocalDate、LocalTime、LocalDateTime介绍 | Java技术经验分享 Java时间处理3---Java8中Instant、Duration、Period、Clock介绍 | Java技术经验分享 一些有意思的问答 | Java技术经验分享 Nacos系列博客说明 | Java技术经验分享 菜鸡程序员的2019年度总结 | Java技术经验分享 Java中“附近的人”实现方案讨论及代码实现 | Java技术经验分享 Java时间处理2----时区TimeZone类方法探究(Java8以前) | Java技术经验分享 Java时间处理1----Date和Calendar方法探究(Java8以前) | Java技术经验分享 FastJson中JSONString、JavaBean、JSONObject、JSONArray的转换关系及API示例 | Java技术经验分享 2019.11软考软件设计师归来心得体会及复习备考指南 | Java技术经验分享 你还没用过“约定式提交”吗?那你赶紧来补补知识吧 | Java技术经验分享 教你如何看懂UML中的类图及类图中的关系 | Java技术经验分享 设计模式总览 | Java技术经验分享 萌新入门Github请看这里,学不会远程教 | Java技术经验分享 Hexo的工作原理探究 | Java技术经验分享
Java中重写、重载 | Java技术经验分享
文章作者: LarsCheng · 2019-05-23 · via Java技术经验分享

重写

子类继承父类,拥有父类的方法和属性后,子类在保证继承的方法在方法名和参数列不变的情况下,对方法的内部实现进行重新定义,这种现象就是方法重写

重写比较侧重于父子差异

示例

父亲(Father类)名下有一套三层楼房,后来由儿子(Son类)继承,继承之后碰巧拆迁,三层楼房在儿子这里变成了拆迁款,这套房子(house方法)的价值转换就属于重写

1
2
3
4
5
6
7
8
9
10
11
class Father{
public void house(){
System.out.printhl("三层楼房");
}
}

class Son extends Father{
public void house(){
System.out.printhl("拆迁款");
}
}

重载

在同一个类中,有多个同名、但不同参数列表(相同参数不同顺序)的方法存在现象就是方法重载

最常见的重载应该就是构造方法的重载

示例

我掌握了烧菜的技能,当家里没菜的时候我只能做泡面(cook()方法),有一天买了猪肉,于是我做了一份红烧肉(cook(int a)方法),第二天新买了土豆和牛肉,于是麻溜的做了一份土豆炖牛肉(cook(int a,String s)),后台有一天家里来客人,他们带来了鸡肉和蘑菇于是我就做了小鸡炖蘑菇(cook(String s,int a))

可以看出同样是烧菜,但根据不同的配菜可以用同样的手法做出不同的菜品。这种因菜而变的烧菜方法也是重载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class Cooking {

public int cook(){
System.out.println("泡面");
return 1;
}


public void cook(int a){
System.out.println("红烧肉");
}


public String cook(int a,String s){
return "土豆炖牛肉";
}


public String cook(String s,int a){
return "小鸡炖蘑菇";
}

public static void main(String[] args){
Cooking o = new Cooking();

o.cook();

o.cook(0);

System.out.println(o.cook(1,"a"));

System.out.println(o.cook("b",2));
}
}

重写与重载之间的区别

要点 重写 重载
方法名 不可修改 不可修改
参数列表 不可修改 必须修改
参数顺序 不可修改 可以修改
返回类型 不可修改 可以修改
异常 只可降级或删除 可以修改
访问权限 只可降级 可以修改