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