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