2013-04-04 115 views
0

我有一個abstarct類:抽象類初始化

abstract class Shape { 

    public String color; 
    public Shape() { 
    } 
    public void setColor(String c) { 
     color = c; 
    } 
    public String getColor() { 
     return color; 
    } 

    public double area() { 
     return 0; 
    } 
} 

其中規定非抽象方法,然後我想初始化它喜歡:

 Shape object = new Shape(); 

等初始化它仍然給我的錯誤,但爲什麼如果我在類中提供一個抽象方法,那麼可以理解的是,類ca不會被初始化,所以在第二種情況下,它仍然會給出錯誤。任何幫助,將不勝感激

+0

http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html – 2013-04-04 05:45:47

+0

你不能實例化一個抽象類。 – NilsH 2013-04-04 05:45:51

回答

6

初始化它仍然給了我一個錯誤,但爲什麼

因爲類是抽象的。抽象類不能直接實例化,不管它是否有抽象方法。來自JLS section 8.1.1.1

如果嘗試使用類實例創建表達式(第15.9節)創建抽象類的實例,則會出現編譯時錯誤。

如果您還沒有任何抽象方法,並且希望能夠直接實例化該類,請將該類設置爲非抽象類。製作不帶抽象方法的課程的唯一理由摘要以強制使用具體的子類。

+0

thakyou這麼多的幫助很大。 – User42590 2013-04-04 05:55:52

0

不,你不能實例化一個抽象類