Интерфейсы в Java: нельзя сделать реализованные методы защищенными или приватными - PullRequest
27 голосов
/ 08 января 2009

Я знаю, что интерфейс должен быть публичным. Однако я этого не хочу.

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

Проблема в том, что я не могу сделать интерфейс или реализованные методы защищенными.

Что такое обходной путь? Есть ли шаблон дизайна, который относится к этой проблеме?

Из руководства по Java абстрактный класс тоже не справится с работой.

Ответы [ 12 ]

0 голосов
/ 08 января 2009

Я бы просто создал абстрактный класс. В этом нет никакого вреда.

0 голосов
/ 08 января 2009

Вы можете использовать инкапсуляцию вместо наследования.

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

Тогда вы можете выставлять только то, что хотите.

Очевидным недостатком этого является то, что вы должны явно использовать сквозные методы для всего, что вы хотите раскрыть. И это не будет подкласс ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...