Ситуация: есть интерфейс с методом "лазать по деревьям" и реализующий его класс "кошка", который в свою очередь является родительским классом для класса "тигр". Допустим тигры не умеют лазать по деревьям, как заглушить этот метод у тигров, как обходят этот момент концептуально? Не переопределять же его с пустым тело и возможностью вызова метода у экземпляра тигр. При этом уточню что связь наследственная обязательна т.к. поля и другое поведение у классов схожи.
import life.*
17 уровень
Тигр не умеет лазать по деревьям
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia Volkova Java Developer в DXC Master
24 сентября 2019, 08:22полезный
Концептуально это решается выбрасыванием UnsupportedOperationException.
Например, так это работает в некоторых реализациях коллекций, если они не поддерживают метод, заданный в родительском интерфейсе.
+3
Руслан
24 сентября 2019, 08:20
Интересный вопрос, я бы переписал метод и поставил бы в настройках приватности private, чтоб его вызвать было нельзя
0
Ksenia Volkova Java Developer в DXC Master
24 сентября 2019, 08:22
Нельзя сужать видимость переопределяемого метода.
+1