受保护的类scala?

时间:2015-02-21 21:08:36

标签: scala

如果我有一个抽象类,并希望它有两个由子类实现的方法,并且我不希望这些方法在子类之外可见,我该怎么做?我试图使抽象方法受到保护,实现的方法是私有的,但不断出错。我需要该方法对子类可见,并且对其他任何内容都不可见。

2 个答案:

答案 0 :(得分:2)

有点不清楚,但protected关键字应该做你想做的事情:

abstract class A() { protected[this] def f(): Unit }
class B() extends A() { protected[this] def f(): Unit = { println("B.f()") } }

val b = new B()
b.f()  // error: value f is not a member of B

答案 1 :(得分:1)

诀窍是在实现类中使def 受保护,否则它将是公共的。