#java
#java
Вопрос:
Я определил суперкласс, переменные-члены которого являются частными, а функции — общедоступными. Я хочу, чтобы методы этого суперкласса были доступны в дочернем классе, но не снаружи этого класса.
Другими словами, методы суперкласса становятся закрытыми в дочернем классе, так что к ним нельзя получить доступ извне класса. Возможно ли такое поведение или нет?
Комментарии:
1. объявите методы вашего суперкласса как
protected
2. Вы не можете уменьшить видимость в подклассе. Это часть дизайна языка Java, как вы можете найти, прочитав JLS или попробовав его в любой IDE.
Ответ №1:
Я думаю, вы ищете protected
модификатор. protected
к методам можно получить доступ из классов в том же пакете и расширяющих классов.
Другой способ — это инверсия управления с использованием шаблона метода шаблона: базовый класс определяет поведение в неабстрактном методе с использованием абстрактных методов, которые дочерние классы должны перезаписать — так что дочерним классам нужно расширять только определенные части и не заботиться об остальном.
Ответ №2:
технически в Java нет модификатора для этого варианта использования, но защищенный позволяет приблизиться, но разрешить доступ внутри пакета.