2011-12-15 4 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)); 

이것은 올바르지 않습니다.

관련 문제