Lif*_*ang 3 oop overriding scala
在Scala中,有四种成员修改,即def,val,lazy val,var.关于覆盖的规则看似复杂且不一致,例如,def可以被覆盖val,而不是相反.很高兴看到所有这些规则的完整列表.
scala中的所有重叠都分为两类,第一种情况是覆盖抽象成员(in trait或abstract class),另一种是覆盖具体成员:
def,val,lazy val,var可能都在子类中重写:
def:可以通过各种部件(被覆盖def,val,lazy val,和var).
val:只能被覆盖val.
lazy val:只能被覆盖lazy val.
var:混凝土var不能被覆盖.
lazy val 不能是抽象的,所以只有三个规则:
def:可以通过各种部件(被覆盖def,val,lazy val,和var).
val:可以被val和重写lazy val.
var:可以通过(1)覆盖var,或者(2)一对由实施读操作和写操作的def,val或lazy val.
编辑:
正如@iuriisusuk所指出的,请参阅规范中的相关部分以获得正式描述.
| 归档时间: |
|
| 查看次数: |
711 次 |
| 最近记录: |