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();😬
}
}
Verk
22 уровень
Объясните пожалуйста код который под смайликами , понять не могу его ((((
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Pavel Grmv
13 октября 2022, 17:41
Если именно эта строчка
Здесь мы делаем downcast (расширение типа), т.е. явное преобразование типа объекта из Apartment в OneRoomApt, чтобы применить к объекту метод clean1Room();, переопределенный в классе OneRoomApt. (взял из другого обсуждения)
0
Verk
11 апреля 2022, 11:50
((OneRoomApt) apartment).clean1Room()
((TwoRoomApt) apartment).clean2Rooms()
((ThreeRoomApt)apartment).clean3Rooms()
По этим строкам )
0
Ada
11 апреля 2022, 11:39
Вы про else if (apartment instanceof TwoRoomApt) итд?
Если да, логика такая: с помощью оператора instanceof вы проверяете, соответствует ли тип объекта apartment тому классу, который указан справа (в данном случае — TwoRoomApt).
На более простом примере это выглядит так:
String a = "Hello";
a instanceof String означает следующее: переменная a — хранит в себе значение типа String?
+1