【发布时间】:2014-07-31 18:16:38
【问题描述】:
我有 trait,这个 trait 已经在框架中定义并且不能改变:
trait GenericProfile {
def firstName: Option[String]
def lastName: Option[String]
def fullName: Option[String]
def email: Option[String]
def avatarUrl: Option[String]
}
我想要一个类继承它:
class BasicProfile(
providerId: String,
userId: String,
firstName: Option[String],
lastName: Option[String],
fullName: Option[String],
email: Option[String],
avatarUrl: Option[String]
) extends GenericProfile{
def providerId=this.providerId //ambiguous reference will be here
...
}
但是如果我不重新定义未实现的方法,仍然有错误,因为BasicProfile中的值被认为是私有的,不认为它已经实现了。
我知道它可以简单地写成覆盖,但我在实践中还有另一个类:
case class IdProfile(id:String,
providerId: String,
userId: String,
firstName: Option[String],
lastName: Option[String],
fullName: Option[String],
email: Option[String],
avatarUrl: Option[String])extends BasicProfile(providerId,userId,firstName,lastName, fullName,email, avatarUrl){
}
我不希望 IdProfile 覆盖其父类 BasicProfile 中的方法,只需继承即可。
【问题讨论】:
标签: scala inheritance