保护类scala?

保护类scala?,scala,Scala,如果我有一个抽象类,并且希望它有两个由子类实现的方法,并且我不希望这些方法在子类之外可见,我将如何做到这一点?我试图将抽象方法设置为受保护的,将实现的方法设置为私有的,但不断出现错误。我需要方法对子类可见,而对其他任何东西都不可见 有点不清楚,但是protected关键字应该满足您的要求: abstract class A() { protected[this] def f(): Unit } class B() extends A() { protected[this] def f(): Un

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

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

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

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

这有点不清楚,但是
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也在实现类中受保护,否则它将是公共的。

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

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

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