重写和重载的区别
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
1. 重写
当子类存在一个和父类一模一样 的方法时我们称子类覆盖了父类的方法也称为重写Override。
重写发生在父子类中方法名、参数列表必须相同
1.1 方法调用顺序
通过子类对象调用方法时现在子类中查找有没有对应的方法如果存在就执行子类的否则执行父类的如果父类也没有就会报错。
1.2 方法覆盖细节
- private修饰的方法不能被子类所继承不能重写
- 实例方法签名必须相同 方法签名 = 方法名 + 方法的参数列表
- 子类方法的返回值类型和父类方法的返回类型相同或者是其子类
- 子类方法中声明抛出的异常小于或等于父类方法声明抛出的异常类型
- 子类方法的访问权限大于或等于父类方法的访问权限
使用方式直接拷贝父类中方法的定义到子类中然后重新编写方法体即可。
2. 重载
2.1 方法重载
在同一个类中允许某方法存在一个以上的同名方法只要它们的参数列表不同即可
注意方法重载发生在同一个类中
2.2 参数列表
参数的类型 + 参数的个数 + 参数的顺序
2.3 方法签名
方法名称 + 方法参数列表在同一个类中方法签名是唯一的否则编译报错
2.4 方法重载判断原则 两同一不同
- 两同 在同一个类中方法名是相同的
- 一不同方法参数列表不同参数类型、参数个数、参数顺序
只要参数类型、参数个数、参数顺序任意一个不同就叫参数列表不同。
2.5 方法重载的作用
屏蔽了同一功能的方法由于参数不同所造成方法名称不同
注意方法重载和方法的返回值类型无关只是一般要求返回值类型相同。