2010-07-02 110 views

回答

4

抽象類被設計爲擴展,每個構造函數來自子項must perform a call to a constructor from the base class,因此您需要抽象類中的構造函數。

抽象類是一個骨架,因此直接實例化它是沒有意義的,因爲它仍然是不完整的(孩子會提供其餘的)。

2

一個例子:

public abstract class BaseClass 
{ 
    private String member; 

    public BaseClass(String member) 
    { 
     this.member = member; 
    } 

    ... abstract methods... 
} 

public class ImplementingClass extends BaseClass 
{ 
    public ImplementingClass(String member) 
    { 
     /* Implementing class must call a constructor from the abstract class */ 
     super(member); 
    } 

    ... method implementations... 
} 
2

我們可以用一個抽象類的構造函數來執行代碼,相關的每個子類中。這樣可以防止重複的代碼

1

抽象類可以有字段和非抽象方法(使它成爲比接口更抽象的類)。當擴展它的類被實例化時,這些字段可能需要被初始化。

具有抽象類的構造函數允許你調用super(foo);初始化它們,而不是直接做