java - Java: super() 不是在第一行可能吗?
问题描述
是否可以在子类的第一行调用父类的构造函数?
我想构建这样的东西(参见构造函数 B)。
class A
{
public A () {}
public A (int x) { // do something }
}
class B extends A
{
public B (int y)
{
if (y > 0) { super (y); }
}
}
我认为随着默认构造函数的存在,它会被自动调用。如果没有它,它将需要为 B () 中的第一行调用 super。
是否可以在第一行之后调用另一个构造函数(带有参数) - 或者具有相同的效果?
解决方案
这是不可能的。super()
必须始终是子构造函数的第一条语句。有关原因的更多详细信息,请参阅:为什么 this() 和 super() 必须是构造函数中的第一个语句?
推荐阅读
- apache-flink - Apache Flink:以键为标签的指标
- java - 异常 PersistenceException 推翻 NoSuchException
- aws-sdk - MuleSoft AWS SDK -- 跨账户信任 (assumeRole)
- javascript - 数组比较函数返回两个数组
- deep-learning - 如何微调 BERT 模型?
- ios - 从键盘获取在 wkwebview 上输入的文本
- wordpress - Wordpress 网站已停止加载,WP Admin 未加载
- javascript - 使用 Nuxt 点击时调用 api
- r - 如何在 RMarkdown 内联代码中编写正确的表达式
- heatmaply - 热图不显示情节