重载和覆盖区别

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

1. 首先搞明白覆盖是什么?

·        举个栗子

public class Main {
	public static void main(String[] args) {
		new Father().print();
		new Son().print();
	}
}
 
class Father{
	 public void print(){
		 System.out.println("father");
	 }
}
class Son extends Father{
	@Override
	public void print() {
		System.out.println("SON");
	}		
}

·        运行截图

该例中子类继承了父类,但重写了父类的方法,因此虽然是从父类中拿到的方法,但重写之后与父类方法有了区别,因此称为覆盖(即子类方法覆盖了父类方法)

1. 重载是什么?

·        举个栗子

public class Main {
	public static void main(String[] args) {
		new Test().print();
		new Test().print(3);
		new Test().print(3,"双参");
	}
}
 
class Test{
	 public void print(){
		 System.out.println("无参");
	 }
	 public void print(int i){
		 System.out.println(i+" "+"单参");
	 }
	 public void print(int i,String j){
		 System.out.println(i+" "+j);
	 }
}

·        运行截图

该例子里写了多个 print 方法,但参数不同,因此可以运行,这也就是重载的含义,一个类中可以有多个同名不同参(参数列表不同)的方法。

从上述例子中可以看出覆盖和重载的一些区别,但还存在一些区别不再用代码验证了,具体如下

区别

覆盖

重载

实现上

子类对父类方法的重写

同一个类中建立多个同名方法

参数

与父类同名同参

与别的方法同名不同参

返回

子类与父类返回类型要一致

无此要求

权限

子类不能覆盖父类的 private 方法

无此要求

父类一个方法只能在子类覆盖一次

重载只要参数不同,可以多次

覆盖是针对父类方法的重写

同类中的方法均可重载

重写要求子类比父类抛出更少的异常

无此要求

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值