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

Kotlin能否自动生成与父类构造签名匹配的派生类构造器?

探讨Kotlin中派生类自动继承父类主构造器的可能性

其实我也一直在琢磨这个问题——虽然暂时没有实际项目里用到这种特性的案例,但我确实设想过这样的语法糖能解决不少维护上的麻烦。先给你看看常规的实现方式:

abstract class Greeter(val firstName: String, val lastName: String) {
  abstract fun greet()
}

class Formal(firstName: String, lastName: String): Greeter(firstName, lastName) {
  override fun greet() {
    println("Hello $firstName $lastName!")
  }
}

class Informal(firstName: String, lastName: String): Greeter(firstName, lastName) {
  override fun greet() {
    println("Hi $firstName!")
  }
}

现在的痛点很明显:每一个派生类都必须显式定义和父类完全一致的构造参数,还要手动调用父类构造器。如果哪天父类的主构造器需要修改(比如新增一个middleName参数),所有派生类都得跟着调整构造参数和父类调用逻辑,在派生类数量多的场景下,这简直是个噩梦。

我一直在想,能不能有更简洁的写法,比如这样:

class Informal(*): Greeter(*) {
  override fun greet() {
    println("Hi $firstName!")
  }
}

这种语法的核心期望是:

  • 编译器自动生成和父类主构造器签名完全匹配的派生类构造器
  • 自动完成父类主构造器的调用,不需要手动写参数传递逻辑

这样一来,父类构造器的变更就能自动同步到所有派生类,彻底消除重复代码,也避免了遗漏修改的风险。

内容的提问来源于stack exchange,提问作者Ivan Pavlukhin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:10:17