如果我有特质:
trait Person
{
val name: String
}
然后是一个案例类:
case class Student(val name: String) extends Person
{
......
}
这两个“名字”是一回事吗?如果我将值传递给学生的“名称”字段,我可以通过人名来访问此值吗?我猜不会。或学生的“名字”会覆盖人名?我想我只能通过学生课程访问学生的姓名。
答案 0 :(得分:1)
您正在使用Student类中的字段覆盖Person trait中的抽象字段,因此您的猜测是正确的。
您可能需要考虑一些小的变化。 您可以将特征中的抽象定义设为“def”。这使您在覆盖方面具有更大的灵活性,请参阅https://stackoverflow.com/a/19642301/52055
此外,在case类中,假定您的类参数使用“val”关键字,因此您无需提供它。所以你最终得到了
trait Person
{
def name: String
}
case class Student(name: String) extends Person
{
......
}