首页 > 解决方案 > 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。

是否可以在第一行之后调用另一个构造函数(带有参数) - 或者具有相同的效果?

标签: javaoop

解决方案


这是不可能的。super()必须始终是子构造函数的第一条语句。有关原因的更多详细信息,请参阅:为什么 this() 和 super() 必须是构造函数中的第一个语句?


推荐阅读