2

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

我的大脑中有些东西不正确,我希望这个问题能帮助我把这些碎片拼凑起来。

4

2 回答 2

8

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

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

于 2013-05-29T21:12:38.527 回答
1

因为一个类只能继承1个类,它的父类只能继承1个类,它只能去它上面的那个,它会调用自己父类的构造函数。

class GrandParent
{
      GrandParent()
      {
      }
 }

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

class Child extends Parent
{
      Child() {
           super(); //calls Parent()
      }
}
于 2013-05-29T21:17:53.907 回答