型变
一、协变
class Covariant[+T]{ }
对于两种类型 A 和 B,如果 A 是 B 的子类型,那么 Covariant[A] 就是 Covariant[B] 的子类型
二、逆变
class Inversion[-T]{ }
对于两种类型 A 和 B,如果 A 是 B 的子类型,那么 Inversion[B] 就是 Inversionr[A] 的子类型
三、不变
class Invariant[T]{ }
默认情况下,Scala中的泛型类是不变的
如下图所示:
案例:
package nj.zb.kb09.oop
object CovariantAndContravariant {
//协变点(Covariant)和逆变点(Inversion),不变(Invariant)
class Animal{
def eat():Unit={
println("动物要吃食物")
}
}
class Cat extends Animal{
override def eat(): Unit = println("猫要吃鱼")
}
class Tiger extends Cat{
override def eat(