object Demo {
class Animal{
def walk = println("animal walk")
}
class Dog extends Animal{
def wangwang = println("wangwang jiao")
}
class Cat extends Animal{
def miaomiao = println("miaomiao jiao")
}
//协变 T为animal的派生类
def m01[T <: Animal](t:T) = {
t.walk
}
//逆变 T为cat的超类
def m02[T >: Cat](cat: Cat,animalArray : Array[T]): Unit ={
animalArray(0) = cat
println(animalArray)
}
def main(args: Array[String]): Unit = {
val cat = new Cat
m01(cat)
var animalArray = new Array[Animal](10)
m02(cat,animalArray)
}
}
scala 协变 逆变
于 2022-09-27 14:07:47 首次发布