2013-02-18 53 views
0

如果我有一個類理解方法在超級調用()調用

class Foo{ 
    String name; 
    public Foo(String s){ 
     name=s; 
    } 

    public void setName(String s){ 
     name=s; 
    } 

    public String getName(){ 
     return name; 
    } 
} 

然後

class FooBar extends Foo { 
    public FooBar(String S){ 
     super(s); 
    } 
} 

,我的主要方法是

public static void main(String[] args){ 
    FooBar item1 = new FooBar("Jim"); 
} 

請問超()在類FooBar中調用,然後調用Foo()的構造函數並將名稱正確設置爲s?這是一個普通的super()調用嗎?調用正在擴展的類的構造函數?

回答

2

是的,這正是它的作用。它調用super/base類的構造函數。

1

super總是指您的父類。代碼執行的順序將是如下:

new FooBar("Jim"); - >super(s); - >Foo(String s)將設置name=s

有一個默認的構造函數,所以沒有super()(不帶參數的IE),因爲你無法創建FooBar的實例而沒有String參數