在java中,什么是协变返回类型?
发布网友
发布时间:2022-05-10 19:34
我来回答
共2个回答
热心网友
时间:2023-10-25 02:44
在Java1.4及以前,子类方法如果要覆盖超类的某个方法,必须具有完全相同的方法签名,包括返回值也必须完全一样。
Java5.0放宽了这一*,只要子类方法与超类方法具有相同的方法签名,或者子类方法的返回值是超类方法的子类型,就可以覆盖。
注意:"协变返回(covariant return)",仅在subclass(子类)的返回类型是superclass(父类)返回类型的extension(继承)时才被容许。
热心网友
时间:2023-10-25 02:44
协变,就是父类和子类保持相同形式的变化,但是协变有时候倍支持,有时候不被支持
比如,在数组中,协变是支持的
比如
class
parent{}
class
child
extends
parent{}
那么
child[]可以赋值给
parent[]
,这个就是协变
但是,在泛型中,协变就不可以
比如
虽然child
extends
parent
但是,假设有个
test<t>,则
test<child>不可以赋值给test<parent>,这2者毫无关系