2012-06-19 134 views
2

問題的簡短摘要:我有一個由子類擴展的父類。Java super()繼承

 public class Parent{ 

     public Parent(){ 
      //constructor logic 
     } 
    } 

這個子類調用父類的構造函數使用超:

 public class Child extends Parent{ 

     public Child(){ 
      super(); 
     } 
    } 

我在想,如果我是延長了兒童類,如果我可以打電話給在孫類超()方法的構造函數:

public class Grandchild extends Child{ 

     public Grandchild(){ 
      super(); 
     } 
    } 

回答

4

super()在繼承上調用構造函數一級,如果存在無參數構造函數,則隱式調用它。

對象從繼承的頂層進行初始化,在您的情況下,它是Object> Parent> Child> Grandchild。

documentation

If a constructor does not explicitly invoke a superclass constructor, the Java compiler 
automatically inserts a call to the no-argument constructor of the superclass. If the super 
class does not have a no-argument constructor, you will get a compile-time error. Object does 
have such a constructor, so if Object is the only superclass, there is no problem. 
6

這將調用Child類的構造函數,這反過來將調用Parent類的構造函數。

+0

+1恰好是的,超級調用構造函數1級最高。 – Sajmon