在Scala中,如果我创建了一个对象和伴随类,protected
如果导入了对象,则可以从类中访问使用修饰符声明的标识符:
object Foo {
protected val X = 42
}
class Foo {
import Foo._
def getX(): Int = X
}
Run Code Online (Sandbox Code Playgroud)
但是,protected
无法从类Foo的子类访问标识符:
class Bar extends Foo {
import Foo._
def getX(): Int = X * 2
}
Run Code Online (Sandbox Code Playgroud)
我得到一个编译时错误Bar
.
其他(隐含的)public
,是否有任何访问修饰符,我可以X
从它的伴侣的子类访问它,但不能从其他类,包括同一个包中的其他类访问?
那是因为只有该类Foo
是该对象的伴侣Foo
.
这里,private
和protected
无意义之间的区别,因为对象Foo
是单例,这意味着没有任何其他对象与object Foo
(Foo.type
)具有相同的类.
Scala中的访问限制是基于包的,所以简短的答案是否定的.但是,您可以在基类上创建转发器,除非您需要它在没有实例的情况下可用.
但是,在你的位置,我会回到设计委员会.
归档时间: |
|
查看次数: |
1601 次 |
最近记录: |