constructor - 无法编译内部构造函数调用原因:预期主构造函数调用
问题描述
假设我们有以下主要和次要构造函数:
open class Animal(val name:String){
internal constructor(message:InputStream): this(readName(message))
}
为什么不能调用超类的内部构造函数?
class Dog(name:String):Animal(name){
internal constructor(message:InputStream):super(message)
^^^^^
Primary constructor call expected
}
编辑
显然,当主构造函数转换为辅助构造函数或完全删除时,它会编译。
class Dog:Animal{
constructor(name:String):super(name)
internal constructor(message:InputStream):super(message)
}
这是编译器错误吗?
解决方案
来自文档:
如果类具有主构造函数,则每个辅助构造函数都需要直接或间接通过另一个辅助构造函数委托给主构造函数。
this
使用关键字完成对同一类的另一个构造函数的委托
和:
如果该类没有主构造函数,则每个辅助构造函数都必须使用
super
关键字初始化基类型,或者委托给执行此操作的另一个构造函数。
你的Dog
类有一个主构造函数,所以你必须使用this
. 如果删除主构造函数,您将能够引用super
构造函数:
class Dog : Animal {
constructor(message: InputStream) : super(message)
}
(以上没有错误)
推荐阅读
- python - Python 截断指数分布
- c# - C#如何将对象转换为运行时类型?
- ios - 有没有办法暂停一个实例的重复通知?
- apache-kafka-streams - Kafka Streams Punctuator 检查 StateStore 中条目的发送时间
- mysql - 按重要性顺序在单行中输出数据
- python - 填写数独板-回溯解题
- php - 如何在 Laravel 5.7 中从视图到控制器获取数据属性的值?
- r - 使用 emmeans 检验模型之间的显着性
- python - 尝试针对我的随机 forrest 模型进行测试时,如何修复“特征数量错误”?
- python - 在这种情况下如何结合 Python 和 Html 工作?