2013-05-29 19 views
2

我想我错过了一些东西,或者某些东西没有点击我。我正在阅读一本关于java的书,并且刚刚了解了super()。当用于获取构造函数时,它从一个超类获取构造函数,是否正确?如果你想要两个超类,那该怎么办呢?Super()关键字...它可以用来调用一个以上的超类的构造函数吗?

有些东西只是坐在我的大脑里,我希望这个问题能帮助我把这些东西放在一起。

+0

http://stackoverflow.com/questions/11935895/java-how-to-call-super-super-in-overriden-method-grandparent-method看看这条每页。 –

+0

*“Super()关键字......它可以用来调用多个超类的构造函数吗?”*是的。事实上,这是不可能的**不**。只是不*直接*。 –

+2

什么是downvote?我一点都没搞明白 –

回答

7

你不能去两层。你只能决定打电话给你的父母。然后这个班轮流负责调用其父母。

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

+2

“编译器插入一个'super()'调用” - 除非调用this()'。 –

1

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

class GrandParent 
{ 
     GrandParent() 
     { 
     } 
} 

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

class Child extends Parent 
{ 
     Child() { 
      super(); //calls Parent() 
     } 
} 
相关问题