2011-12-15 44 views
8

我有一個類抽象類Room它有小類FamilyStandard,我已經創建room = new ArrayList<Room>();Hostel類。我有一個方法給ArrayList添加一個空間;班'室'是抽象的;不能實例化

public String addRoom(String roomNumber, boolean ensuite) 
{ 
    if (roomNumber.equals("")) 
     return "Error - Empty name field\n"; 
    else 

    room.add(new Room(roomNumber,ensuite)); 
    return "RoomNumber: " + roomNumber + " Ensuite: " + ensuite 
    + " Has been added to Hostel " + hostelName; 
} 

但是,我得到編譯時錯誤;

房間是抽象的;不能實例化

我明白,抽象類不能實例化,但什麼是最好的方式來添加房間?

+2

你說你「有一個抽象類'房間'」,你問爲什麼編譯器會在你嘗試實例化時抱怨? –

+1

我想你應該快速瀏覽一下這個頁面:http://docs.oracle.com/javase/tutorial/ :-) –

+0

你爲什麼讓空間抽象?問問自己,你是否真的明白'抽象'的作用,你應該能夠自己回答這個問題。 – Kapep

回答

8

你有這個錯誤,因爲你正試圖創建一個抽象類的實例,這是不可能的。你必須

room.add(new Family(roomNumber, ensuoute)); 

room.add(new Standard(roomNumber, ensuoute)); 
+1

謝謝,這正是我正在尋找的,duno我怎麼沒有想到它 –

+1

:)不要擔心它發生在每個人.. .. – AValchev

6

錯誤說明了一切:Room是一個抽象類,和抽象類不能被實例化。

你想在這裏實例Room

new Room(roomNumber,ensuite) 

只能創建具體的實例(即非抽象)類。很可能是FamilyStandard是具體類,因此可以實例化。

要解決這個問題,您需要根據房間號找出正確的房間類型,並實例化相應的類。

0

您正在創建一個抽象類的實例;

room.add(new Room(roomNumber,ensuite)); 

這是不正確的。