* covariance(协变):比如 List[T],如果对A及其子类型B,满足 List[B]也符合 List[A]的子类型 * contravariance(逆变):比如 List[T],如果对A及其子类型B,满足 List[A]也符合 List[B]的子类型 class A{ def f()=println("A") } class B extends A{ override def f()=println("B") } class C[+T](val a:T){} class D[-T](val a:T){} object main { def main(args: Array[String]) { val v1:C[A] = new C[A](new B()) v1.a.f() val v2:D[B] = new D[A](new A()) v2.a.f() //这一步会报错,不知道为什 } }