java重写(覆盖)与重载的区别
1.重写(覆盖Override)
重写发生在接口与实现类,父类与子类之间,特点如下:
- 方法名,返回值类型必须相同,参数列表必须相同
![在这里插入图片描述](https://img-blog.csdnimg.cn/2a62f7da6bb14d6ab16ba25e19400872.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc3kxMjExNjg3NzI1,size_20,color_FFFFFF,t_70,g_se,x_16)
- 访问权限只能等于或者大于父类的访问权限
![在这里插入图片描述](https://img-blog.csdnimg.cn/c6bc20806f2b4e21a4d07a8b4a03ba56.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc3kxMjExNjg3NzI1,size_20,color_FFFFFF,t_70,g_se,x_16)
- 不能重写构造方法
![在这里插入图片描述](https://img-blog.csdnimg.cn/dbe7bf28f8ff4e0ab02625d955635beb.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc3kxMjExNjg3NzI1,size_20,color_FFFFFF,t_70,g_se,x_16)
2.重载(Overload)
重载发生在本类,方法名相同,参数列表不同,与返回值无关,特点如下:
-
方法名必须相同
-
方法的参数列表一定不一样。
-
访问修饰符和返回值类型可以相同也可以不同。
![在这里插入图片描述](https://img-blog.csdnimg.cn/4bcaabe61f6e4a02ae50147611d6044d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc3kxMjExNjg3NzI1,size_20,color_FFFFFF,t_70,g_se,x_16)
-
构造器可以重载
最后来个表格总结
比较 | 重写(覆盖) | 重载 |
---|
类的数量 | 接口与实现类、父子类 | 本类 |
方法名称 | 一致 | 一致 |
参数列表 | 不能修改 | 必须修改 |
返回类型 | 不能修改 | 可以修改 |
异常 | 只能小于或等于父类异常 | 可以修改 |