level 1
AhsokaTano
楼主
scala类定义不但是声明了各个field和方法,还是一个构造函数。这就会导致子类override field影响到基类的构造函数问题。比如
class a{
var m: List[Int] = List(0);
println(m.mkString(","));
}
这是完全没有问题的,构造类a的instance时都会打印 list(0)
但加上下面这个子类之后
class b extends a {
override m : List[Int] = List(1,2);
println(m);
}
a的构造函数依然会运行(scala 3.2.2) 但此时m对应一个空指针,println这一步会报错。
2023年02月16日 03点02分
1
class a{
var m: List[Int] = List(0);
println(m.mkString(","));
}
这是完全没有问题的,构造类a的instance时都会打印 list(0)
但加上下面这个子类之后
class b extends a {
override m : List[Int] = List(1,2);
println(m);
}
a的构造函数依然会运行(scala 3.2.2) 但此时m对应一个空指针,println这一步会报错。