1. 方法返回类型的可协变性
首先,方法签名
是指 方法名
和参数列表
,并不包括返回类型
,而我们覆盖父类方法时,需要保证签名一致。
例如: class Manager extends Employee
,而 Employee
中定义如下方法:
public Employee getBuddy() {
}
问题来了,如果Manager
类想覆盖getBuddy()
方法:,需要返回值完全一致吗?
答案是并不需要,Manager
类可以这么覆盖getBuddy()
方法:
@Override
public Manager getBuddy() {
}
只需要保证子类方法的返回类型
是父类方法返回类型的子类型
就可以。