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

Kotlin能否声明internal open类避免父类被公开为public?

结论

完全可以实现你的要求,internal和open是两个互相独立的修饰符,搭配使用不会冲突,也不会改变A类的内部可见性。

具体说明

Kotlin中类的可见性修饰符(internal/public/private/protected)和继承控制修饰符(open/final/abstract等)的作用完全分离:

  • internal仅控制类的可见范围:只有当前Module内的代码可以访问A类
  • open仅控制类的继承权限:允许其他类继承A类

你不需要担心给A加open会把它的可见性改成public,直接按如下写法调整即可正常编译:

// 保持internal可见性,同时允许同Module内的类继承
internal open class A {

}

// B类的定义完全不需要改动
open class B: A {

}

额外说明

如果你的B类需要对外开放给其他Module使用也完全没问题:其他Module的用户只能看到B类,看不到A类的定义,继承B类时也不需要感知A类的存在,不会破坏你对A类的可见性限制。


内容的提问来源于stack exchange,提问作者Isaaс Weisberg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:39:00