理解子类构造函数中 super() 的必要性
在 Java 中创建子类时,会出现这样的问题:是否需要 super()方法调用在子类的构造函数中是强制的。本文深入探讨了这个主题,并在以下方面提供了清晰的说明:
编译器自动插入 super()
这个问题的简短答案是否定的。如果没有明确声明,编译器不会自动在子类的构造函数中插入 super() 调用。因此,子类构造函数必须始终指定它打算调用的超类构造函数。
不存在无参数构造函数等效项
重要的是要理解,不要将子类构造函数中的 super() 调用并不意味着编译器将插入不带参数的等效构造函数。如果超类没有可访问的无参数构造函数,则省略 super() 调用将导致编译错误。
存在参数时的构造函数调用
考虑带有参数的子类构造函数。在这种情况下,需要调用 super() 来指定要调用哪个超类构造函数。调用的超类构造函数主要由传递给子类构造函数的实际参数决定。如果在 super() 调用中未指定参数列表,它将调用与子类构造参数的顺序和类型相匹配的超类构造函数。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3