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



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

private class Foo
protected[this] trait Foo

我没有找到关于这些类/特征/对象级修饰符的任何好解释。所有这些组合是否有意义,它们实际上意味着什么?

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

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 .

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

相关内容

最新更新