在Scala中覆盖子类中的可变变量

时间:2015-06-04 13:26:18

标签: scala

我有一个抽象类和一个扩展它的子类

abstract class User{
var name : String =  "test"
}

我有另一个班级

class Student(name : String) extends User{

}

现在,每当我尝试传递名称制作学生的对象然后在控制台上打印该值而不是向我显示我在构造函数中传递的名称时,它会显示来自父类的测试 / p>

object main extends App{
  val st = new student("ahsen")
  var name = st.name

  println("name is " + name) 
}

输出

  

名称是测试

请帮助

1 个答案:

答案 0 :(得分:6)

您无法覆盖var。也许分配它?

class Student(n: String) extends User {
  name = n
}

或者,您可以在name中将var定义为Student,但前提是超类仅声明变量,而不是定义变量:

abstract class User {
  var name: String
}
class Student(var name: String) extends User