gpt4 book ai didi

scala - 我可以从 Scala 中的父类(super class)继承访问修饰符吗?

转载 作者:行者123 更新时间:2023-12-01 11:42:08 27 4
gpt4 key购买 nike

假设我具有以下特征和扩展该特征的类

trait T { protected def f() }

class C extends T { def f(): println("!") }

object Main extends App {
val c = new C
c.f() // should be a compile error
}

我声明了 fprotectedT 的声明中以便可以从 C 的范围内调用它,但不是别人的。换句话说, C.f()应该是编译错误。我以为 protected来自 T 的修饰符会延续,但事实并非如此。

我可以重新声明 C.f()protectedC 的声明中,但我宁愿不必重复自己。在 Scala 中还有其他方法可以做到这一点吗?

最佳答案

简短的回答:没有。

不指定访问修饰符并不意味着“继承访问修饰符”,它意味着“公共(public)”。 Scala 没有 public关键字,如果它不是这样工作的,那么在覆盖时将无法真正将 protected 成员公开。

换句话说,你必须重复 protected修饰符。

关于scala - 我可以从 Scala 中的父类(super class)继承访问修饰符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19147784/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com