- 重载(overload)
- 发生在同一个类中,方法名相同,参数列表不同,方法体不同
- 与返回值类型无关
- 编译期绑定
2.重写(override)
发生在父子类中,方法名称相同,参数列表相同(方法名称+参数列表=方法的签名)方法体不同
重写遵循两同两小一大
1)两同:方法名相同,参数列表相同(方法的签名)
2)两小:(返回值类型、异常、访问权限)
A. 子类方法的返回值小于等于父类方法的返回值
a. void/基本类型返回值必须相同
b. 引用类型的返回值小于等于父类的返回值
B. 子类方法抛出的异常小于或等于超类的方法抛出的异常
3)一大:子类方法的访问权限大于或等于父类方法的
4)运行期绑定
3.异同
相同点:
1)重载和重写的方法名都相同
不同点:
1)重载的参数类型一定不相同,而重写的参数类型一定相同。
2)重写的方法的返回值类型只能是父类类型或者父类类型的子类 , 而重载的方法对返回值类型没有要求
3)重写发生在父子类中,重载发生在同一个类中
4)子类重写方法的返回值类型不能大于父类被重写的方法的返回值类型,而重载没有返回值类型的限制
5)子类重写的方法使用的访问权限不能小于父类被重写的方法的访问权限,而重载没有访问权限的限制
6)子类不能重写父类中声明为private权限的方法,而重载是可以与private的方法彼此之间构成重载的