Super()关键字...它可以用于调用多个超类的构造函数吗?

时间:2013-05-29 21:11:20

标签: java inheritance

我想我错过了一些东西,或者某些东西没有点击给我。我正在读一本关于java的书,我刚学到了super()。当用于获取构造函数时,它从一个超类中获取构造函数,对吗?如果你想去两个超级课程怎么办呢?

有些东西并没有坐在我的大脑中,我希望这个问题可以帮助我将这些碎片放在一起。

2 个答案:

答案 0 :(得分:7)

你不能升级两级。您只能决定打电话给您的父母。然后该类负责依次调用其父级。

请注意,所有构造函数(Object中的根构造函数除外)都会调用超级构造函数。如果没有显式指定它,或者,正如@PaulBellora所添加的那样,第一个语句是对类的另一个构造函数的this()调用,编译器会在每个语句中插入一个super()调用作为第一个语句构造

答案 1 :(得分:1)

它只能转到它上面的那个,因为一个类只能从1个类继承,并且它的父类只能从1个类继承而且它将调用它自己的父类的构造函数。

class GrandParent
{
      GrandParent()
      {
      }
 }

class Parent extends GrandParent
{
     Parent() {
          super(); //calls GrandParent()
     }
}

class Child extends Parent
{
      Child() {
           super(); //calls Parent()
      }
}