类/对象/特征级别的访问修饰符是什么意思?

时间:2015-04-24 18:58:16

标签: scala

在scala中,我可以将访问修饰符添加到类/特征/对象,例如

private class Foo
protected[this] trait Foo

我没有在这些class / trait / object-level修饰符上找到任何好的解释。所有这些组合是否有意义,它们实际意味着什么?

1 个答案:

答案 0 :(得分:3)

它们与类/特征成员的访问修饰符相同,因为类和特征也可以是其他类的成员。例如:

class A {
    private class Foo
}

班级Foo仅对班级A可见。如果我将修饰符更改为private[this],那么它将被称为对象私有,因此任何Foo 对其可见 A的父实例。

声明privateprivate[this]protectedprotected[this]只能在另一个类或特征中真正有意义,因为它必须是某些东西的私有。在这种情况下,FooA的私有。这同样适用于特质。

我们也可以拥有一个包含对象,并使它们包私有

package com.example.foo

private[foo] class Foo

现在,类Foo仅对包com.example.foo的其他成员可见。

他们有意义吗?在某些情况下,我确信在其他对象中包含私有类和特征是有用的。