Scala 合格的受保护成员在子类中



在 Scala 语言规范中。我发现

保护另一种形式的资格[这]。标有此修饰符的成员 M 称为对象保护;只能从定义它的对象中访问它。也就是说,仅当前缀为 this 或 O.this 时,对于包含引用的某个类 O,选择 p.M 才合法。此外,对不合格的受保护的限制也适用

但是我了解这种情况例如 this.protectedMember

但我没有得到的是

O.this,对于某些包含引用的 O 类。

请帮忙..

然而,正如我的理解所说,这是内部类实现的,就像我们在 Swing 中获取外部类对象一样,例如OuterClass.this.someMethod in anonymous inner class.

表达式 C.this 在具有简单名称 C 的封闭类或对象定义的语句部分中是合法的。它代表由最内层的此类定义定义的对象。

例如,您可以拥有

class O {
  class I {
    // O.this is the instance of O this I instance is nested in
    def M = ...
    M // calls M in I
    O.this.M // calls M in O
  }
  protected[this] def M = ...
}

最新更新