繁体   English   中英

为什么此Scala代码无法编译?

[英]Why does this Scala code not compile?

我不明白为什么它不能编译。 抱怨说是哺乳动物类型的朋友没有说话方法。 但是还有...

class Animal {
  def talk:String = "i am animal"
}
class Mammal extends Animal {
  override def talk:String = "i am mammal"
}
class Cow extends Mammal {
  override def talk:String = "moo"
}

trait Farm[+A] {
  def set[AA >: A](friend: AA): String
}
class CowFarm extends Farm[Cow] {
  override def set[Mammal >: Cow](friend: Mammal): String = friend.talk
}

set Mammal与您在上面几行声明的Mammal 这是一个局部通用类型参数,使您现有的Mammal了一层阴影。 因此,您的方法签名实际上与以下内容没有区别:

override def set[AA >: Cow](friend: AA): String = friend.talk

由于AACow的超类型,因此不能保证使用talk方法。 例如,可以用AnyAnyRef代替它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM