在scala中,我可以向类/特征/对象添加访问修饰符,例如
private class Foo
protected[this] trait Foo
我没有找到关于这些类/特征/对象级修饰符的任何好解释。所有这些组合是否有意义,它们实际上意味着什么?
它们的含义与类/特征成员的访问修饰符相同,因为类和特征也可以是其他类的成员。例如:
class A {
private class Foo
}
类 Foo
仅对类 A
可见。如果我将修饰符更改为 private[this]
,那么它被称为对象私有,因此任何Foo
都只对它的父实例可见 A
.
声明private
、private[this]
、protected
或protected[this]
只有在另一个类或特征中才真正有意义,因为它必须是私有的。在这种情况下,Foo
对A
是私有的。这同样适用于特征。
我们也不能有一个包含对象,并将它们打包为私有。
package com.example.foo
private[foo] class Foo
现在,类 Foo
仅对包的其他成员可见 com.example.foo
.
它们有意义吗?在某些情况下,我确信在其他对象中包含私有类和特征很有用。