C++-在Scala中设置私有访问的样式? 在C++中,可以(请原谅我没有做过的C++错误,并改正错误):
这样C++-在Scala中设置私有访问的样式? 在C++中,可以(请原谅我没有做过的C++错误,并改正错误):,c++,scala,C++,Scala,这样Sub定义了g,但不能直接调用它 在Scala中可以做同样的事情吗?如果您这样尝试的话 abstract class Super { private def g() def f() { g() } } 编译器将向您提供以下错误消息: scala:抽象成员不能有私有修饰符 私有def g() 你必须声明g()至少protected我认为最接近的是 abstract class Super { protected[this] def g: Int def f {
Sub
定义了g
,但不能直接调用它
在Scala中可以做同样的事情吗?如果您这样尝试的话
abstract class Super {
private def g()
def f() {
g()
}
}
编译器将向您提供以下错误消息:
scala:抽象成员不能有私有修饰符私有def g()
你必须声明
g()
至少protected
我认为最接近的是
abstract class Super {
protected[this] def g: Int
def f { println(g) }
}
class Sub extends Super {
protected[this] def g = 5
}
但这并没有给予Super
比Sub
更多的访问权限;它只是防止Sub
在其他实例上调用该方法
在Scala中不可能有完全相同的模式。(因为JVM不支持它,所以它必须是编译器虚构的,但许多访问模式已经是编译器虚构的。)Sub
可以调用g()
,因为在Sub
中定义了g()
。它不能对Super
abstract class Super {
protected[this] def g: Int
def f { println(g) }
}
class Sub extends Super {
protected[this] def g = 5
}