首页 >Java >java教程 >子类构造函数中'super()”是必需的吗?

子类构造函数中'super()”是必需的吗?

Susan Sarandon
Susan Sarandon原创
2024-10-30 22:23:30684浏览

Is `super()` Mandatory in Subclass Constructors?

理解子类构造函数中 super() 的必要性

在 Java 中创建子类时,会出现这样的问题:是否需要 super()方法调用在子类的构造函数中是强制的。本文深入探讨了这个主题,澄清了以下几个方面:

编译器自动插入 super()

这个问题的简短答案是否定的。如果没有明确声明,编译器不会自动在子类的构造函数中插入 super() 调用。因此,子类构造函数必须始终指定它要调用的超类构造函数。

不存在等价的无参数构造函数

重要的是要理解,不要将子类构造函数中的 super() 调用并不意味着编译器将插入不带参数的等效构造函数。如果超类没有可访问的无参数构造函数,则省略 super() 调用将导致编译错误。

存在参数时的构造函数调用

考虑带有参数的子类构造函数。在这种情况下,需要调用 super() 来指定要调用哪个超类构造函数。调用的超类构造函数主要由传递给子类构造函数的实际参数决定。如果 super() 调用中没有指定参数列表,它将调用与子类构造参数的顺序和类型相匹配的超类构造函数。

以上是子类构造函数中'super()”是必需的吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn