协变返回(covariant return)
在Java1.4及以前,子类方法如果要覆盖超类的某个方法,必须具有完全相同的方法签名,包括返回值也必须完全一样。
Java5.0放宽了这一限制,只要子类方法与超类方法具有相同的方法签名,或者子类方法的返回值是超类方法的子类型,就可以覆盖。
注意:"协变返回(covariant return)",仅在subclass的返回类型是superclass返回类型的extension时才被容许。
协变,就是父类和子类保持相同形式的变化,但是协变有时候倍支持,有时候不被支持
比如,在数组中,协变是支持的
比如
class Parent{}
class Child extends Parent{}
那么 Child[]可以赋值给 Parent[] ,这个就是协变
但是,在泛型中,协变就不可以
比如 虽然Child extends Parent
但是,假设有个 Test <T>,则 Test <Child>不可以赋值给Test <Parent>,这2者毫无关系