Android Studio子类不显示继承类的可override重写方法
问题说明
我创建了包含3个方法的ScreenDrawer类,以及继承自ScreenDrawer的ChatsScreen类。但在Android Studio中按下Ctrl+O快捷键时,无法像继承AppCompatActivity的MainActivity那样,看到可供override重写的方法。
需要确认正确的类组织方式,让ChatsScreen可以通过继承识别到ScreenDrawer中的可重写方法。
相关参考截图
ChatsScreen类代码:
- 待继承的
ScreenDrawer类代码:
- 当前
Ctrl+O调出的重写方法列表实际效果:
解决方法
问题出在Kotlin的默认继承规则:Kotlin 中所有类和类方法默认是final修饰的,禁止被继承、重写,和Java默认允许继承重写的逻辑不同。按以下步骤修改即可:
- 给父类
ScreenDrawer的类声明加上open关键字,标记该类允许被继承:
// 修改前 class ScreenDrawer { // 类内部逻辑 } // 修改后 open class ScreenDrawer { // 类内部逻辑 }
- 给
ScreenDrawer中所有允许子类重写的方法,逐个加上open关键字,标记方法支持被重写:
open class ScreenDrawer { // 修改前:方法默认final,子类无法重写,不会出现在重写列表里 // fun initView() {} // fun drawContent() {} // fun handleEvent() {} // 修改后 open fun initView() {} open fun drawContent() {} open fun handleEvent() {} }
- 修改完成后等待Android Studio完成代码索引,再次按下
Ctrl+O就能看到所有可重写的父类方法。
补充:如果父类是抽象类、方法是抽象方法,不需要额外加
open修饰符,abstract修饰的类默认可继承,抽象方法默认要求子类重写实现。
内容的提问来源于stack exchange,提问作者Bo Z
相关产品推荐
相关产品推荐

