나는 추상 클래스 인 Rental을 가지고있다 ... 나는 두개의 서브 클래스 인 SuiteRental과 SimpleRoomRental을 Rental 클래스를 상속 받았다. 나는 개체 SimpleRoomRental과 SuiteRental을 모두 포함하는 3 등급 호텔 (다른 사람들과 연결되지 않은)에 ArraList를 가지고 있습니다.ArrayList의 객체를 검사하는 방법 (java)
그래서 (instance_of로 propably) 각 개체를 검사하고 싶습니다 (나는 그 추상 클래스를 일으키는) 렌탈 개체를 만들 수 없습니다. 어떤 유형의 'k'개체를 선언해야합니까?!?
어떤 아이디어가 있습니까?
public void calculateTotalRentalFees(){
double price=0;
for (int i=0; i<rentals.size(); i++){
if (k instanceof SimpleRoomRental){
SimpleRoomRental y= new SimpleRoomRental();
price=price + y.calculateCost();
}else if(k instanceof SuiteRental){
SuiteRental z=new SuiteRental();
price=price + z.calculateCost();
}
}
}
또한 calculateCost() 메소드가 포함 된 인터페이스가 있습니다.
public interface Cost {
public interface Costs {
double calculateCost();
}
가} 당신은 또한 그들을 모두 처리 할 수있는 인터페이스를 사용하여 시간
'대여'인스턴스를 만드는 데 '새'를 사용할 수 없다고해서 대여 유형의 변수를 사용할 수 없다는 것을 의미하지는 않습니다. instanceof 검사는 쓸모 없다. Rental에서 calculateCost() 추상 메소드를 추가하기 만하면됩니다. 당신은 상속과 다형성의 요점을 완전히 놓치고 있습니다. –
'ArrayList'가 선언 된 클래스로 선언하십시오. – RamenChef
'렌털'의 종류는 무엇입니까? 새로운 인스턴스를 만드는 것보다'SimpleRoomRental'이나'SuiteRental'에'k'를 넣고 싶다면 ... 그리고'for' 루프를 개선하는 것이 더 나을 것이라고 생각합니다. 하지만 그들을 캐스팅해야합니까? 'Rental'은'calculateCost()'메소드를 가지고 있지 않습니까? 'rentals'가'ArrayList'이라면 꼭 필요한 것 같습니다. –