受保护的类scala

  • 本文关键字:scala 受保护 scala
  • 更新时间 :
  • 英文 :


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

这有点不清楚,但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

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

最新更新