在 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 = ...
}