Как создать суперкласс, функция-член которого становится закрытой в дочернем элементе

#java

#java

Вопрос:

Я определил суперкласс, переменные-члены которого являются частными, а функции — общедоступными. Я хочу, чтобы методы этого суперкласса были доступны в дочернем классе, но не снаружи этого класса.

Другими словами, методы суперкласса становятся закрытыми в дочернем классе, так что к ним нельзя получить доступ извне класса. Возможно ли такое поведение или нет?

Комментарии:

1. объявите методы вашего суперкласса как protected

2. Вы не можете уменьшить видимость в подклассе. Это часть дизайна языка Java, как вы можете найти, прочитав JLS или попробовав его в любой IDE.

Ответ №1:

Я думаю, вы ищете protected модификатор. protected к методам можно получить доступ из классов в том же пакете и расширяющих классов.

Другой способ — это инверсия управления с использованием шаблона метода шаблона: базовый класс определяет поведение в неабстрактном методе с использованием абстрактных методов, которые дочерние классы должны перезаписать — так что дочерним классам нужно расширять только определенные части и не заботиться об остальном.

Ответ №2:

технически в Java нет модификатора для этого варианта использования, но защищенный позволяет приблизиться, но разрешить доступ внутри пакета.