Как использовать общедоступные методы, когда класс имеет модификатор доступа по умолчанию?

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

Ответ 1

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

Ответ 2

Непубличный класс может реализовывать открытый интерфейс. Это означало бы, что классы за пределами пакета не могли создать экземпляр этого класса или создать ссылки этого типа, но они все равно могли бы вызывать методы на нем, если они переданы экземпляру.

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

Ответ 3

Это красивое сочетание безопасности и удобства использования, упакованное в одном.

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

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

Как кто-нибудь может это использовать? Хорошо, вы пишете код, чтобы помочь им использовать его, создав открытый класс, который расширяет этот класс по умолчанию. Вы создаете этот публичный подкласс в любом пакете (после импорта курса), и у него есть все опубликованные методы.

У вас есть класс, который делает вашу магию, которую каждый может использовать, не давая никому еще намека на то, как вы это сделали!