elm*_*elm 45 scala immutability
在Scala中,有什么区别
val a = 1
Run Code Online (Sandbox Code Playgroud)
和
final val fa = 1
Run Code Online (Sandbox Code Playgroud)
Mic*_*jac 60
final 成员不能在子类或特征中被覆盖.
法律:
class A {
val a = 1
}
class B extends A {
override val a = 2
}
Run Code Online (Sandbox Code Playgroud)
非法:
class A {
final val a = 1
}
class B extends A {
override val a = 2
}
Run Code Online (Sandbox Code Playgroud)
你会收到这样的错误:
:9:错误:覆盖Int(1)类的A类中的值a;
值a不能覆盖最终成员
win*_*ner 11
在Scala中,final声明可能不会在子类中重写成员.例如:
class Parent {
val a = 1
final val b = 2
}
class Subclass extends Parent {
override val a = 3 // this line will compile
override val b = 4 // this line will not compile
}
Run Code Online (Sandbox Code Playgroud)
另外,正如为什么`private val`和`private final val`不同?,如果一个final val字段持有一个"常量值",一个常量的基本类型,对它的访问将被字节码替换,直接加载该值.
| 归档时间: |
|
| 查看次数: |
14284 次 |
| 最近记录: |