Когда вызываю соответствующий метод в каждом else-if, пишу: apartment.clean~Rooms(); IDEA сама дописывает явное приведение:
public static void cleanAllApartments(List<Apartment> apartments) {
        for (Apartment apartment : apartments) {
            if (apartment instanceof OneRoomApt)
                ((OneRoomApt) apartment).clean1Room();
            else if (apartment instanceof TwoRoomApt)
                ((TwoRoomApt) apartment).clean2Rooms();
            else if (apartment instanceof ThreeRoomApt)
                ((ThreeRoomApt) apartment).clean3Rooms();
Не могу понять, зачем оно там. Если в условиях оператора if и так спрашиваем что объект является экземпляром этого класса.