【问题标题】:Why we cannot mark the visibility of a class as "protected" in kotlin?为什么我们不能在 kotlin 中将类的可见性标记为“受保护”?
【发布时间】:2017-11-07 16:49:45
【问题描述】:

我是 kotlin 的新手我最近一直在学习 kotlin 中的继承,然后我意识到我们不能将类的可见性标记为“受保护”。如果我错了,请纠正我,或者有没有其他方法可以保护类?

【问题讨论】:

  • 我假设您的意思是顶级课程。这怎么可能有意义?将类标记为受保护是什么意思?
  • 可以保护嵌套类,就像在 Java 中一样。
  • 你应该展示一个有确切错误问题的样本,因为你要求的允许的,所以你必须做一些不同的事情。

标签: class kotlin visibility protected access-modifiers


【解决方案1】:

您可以仅标记类的部分protected,以便它们只能从派生类访问。您可以将protected 标记为成员属性、成员函数或嵌套类:

open class X {
    protected val v: SomeType = someValue
    protected fun f() { }
    protected class Y { ... }
}

但是你不能标记protected 任何不属于类的东西(例如顶级类或函数),因为修饰符没有意义:顶级实体不受继承,因此有不能是可以访问它的派生类。

【讨论】:

    猜你喜欢
    • 2014-10-09
    • 2011-04-21
    • 2014-05-16
    • 2020-05-03
    • 2017-09-14
    • 2015-11-11
    相关资源
    最近更新 更多