协变
scala> class Master
defined class Master
scala> class Professional extends Master
defined class Professional
scala>
scala> class Card[+T](val name:String)
defined class Card
scala> def enterMeet(card:Card[Master]){
| println(" welcome to have this meeting ")
| }
enterMeet: (card: Card[Master])Unit
scala> val tom = new Master
tom: Master = Master@308b8e8f
scala> val jarry = new Professional
jarry: Professional = Professional@88ad411
scala> val tomCard = new Card[Master]("tom")
tomCard: Card[Master] = Card@1172a648
scala> val jarryCard = new Card[Professional]("jarry")
jarryCard: Card[Professional] = Card@3e647b97
scala> enterMeet(tomCard)
welcome to have this meeting
scala> enterMeet(jarryCard)
welcome to have this meeting
----------------------------------
逆变
scala> class Card[-T](val name:String)
defined class Card
scala> def enterMeet(card:Card[Professional]) { println(" welcome to have this meeting ") }
enterMeet: (card: Card[Professional])Unit
scala> val tomCard = new Card[Master]("tom")
tomCard: Card[Master] = Card@139596c2
scala> val jarryCard = new Card[Professional]("jarry")
jarryCard: Card[Professional] = Card@72311210
scala> enterMeet(jarryCard)
welcome to have this meeting
scala> enterMeet(tomCard)
welcome to have this meeting