You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio子类不显示继承类的可override重写方法

问题说明

我创建了包含3个方法的ScreenDrawer类,以及继承自ScreenDrawer的ChatsScreen类。但在Android Studio中按下Ctrl+O快捷键时,无法像继承AppCompatActivity的MainActivity那样,看到可供override重写的方法。
需要确认正确的类组织方式,让ChatsScreen可以通过继承识别到ScreenDrawer中的可重写方法。

相关参考截图

  • ChatsScreen类代码:
    ChatsScreen类代码截图
  • 待继承的ScreenDrawer类代码:
    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:27:32