为啥我们不能在 kotlin 中将类的可见性标记为“受保护”?

Posted

技术标签:

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

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

【问题讨论】:

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

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

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

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

【讨论】:

以上是关于为啥我们不能在 kotlin 中将类的可见性标记为“受保护”?的主要内容,如果未能解决你的问题,请参考以下文章

对比Java学Kotlin可见性修饰符

对比Java学Kotlin可见性修饰符

对比Java学Kotlin可见性修饰符

Kotlin:为什么构造函数参数默认具有“内部”可见性?

Kotlin 默认可见性为 public,是不是一个好的设计?

volatile为啥不能保证原子性