2011-12-15 23 views
8

私はサブクラスFamilyStandardを持つ抽象クラスRoomクラスを持っていますので、Hostelクラス内にroom = new ArrayList<Room>();を作成しました。 ArrayListに部屋を追加する方法があります。クラス 'Room'は抽象クラスです。インスタンス化できません

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

"抽象クラス' Room'を持っていて、インスタンス化しようとするとコンパイラが不平を言うのはなぜですか? –

+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)); 

これは正しくありません。

関連する問題