Kotlin中的open关键字是否属于可见性修饰符?
Kotlin open关键字属性说明
首先直接给出结论:open不属于Kotlin的可见性修饰符,它和可见性修饰符是功能完全独立的两类关键字。
- 可见性修饰符的唯一作用是控制类、函数、属性等声明的可访问范围,Kotlin官方定义的可见性修饰符仅有4种:
public、private、internal、protected,这类关键字不会对声明是否允许继承、重写产生任何影响。 open关键字的作用是打破Kotlin的默认final限制,标记类、类成员函数、类属性允许被继承、重写。Kotlin中所有类和类成员默认都是不可继承、不可重写的,只有添加open标记后才会开放对应能力,这个关键字完全不会修改对应声明的可访问范围。
你可以同时使用open和可见性修饰符标记同一个声明,二者互不干扰,比如
open protected fun init() {}中,protected控制这个方法只有子类和同包代码能访问,open控制这个方法允许子类重写,功能完全独立。
内容的提问来源于stack exchange,提问作者Leandro Maro
相关产品推荐
相关产品推荐

