很抱歉,我没有这方面的实际例子,但我不时考虑这样的功能。这是我的合成例子:
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!")
}
}
这里,超类构造函数由派生类显式调用。有可能自动完成吗?理想的是能够做到这样的事情:
class Informal(*): Greeter(*) {
override fun greet() {
println("Hi $firstName!")
}
}
这将生成与超类(主)构造函数具有相同签名的派生类构造函数,并且该构造函数将只调用超类(主)构造函数。
对我来说,第一次定义派生类并不是一个大问题,但更改基类构造函数时更改所有派生类可能会很烦人。