какая польза от использования открытых методов, когда у класса есть модификатор доступа по умолчанию? - PullRequest
13 голосов
/ 12 января 2010

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

Ответы [ 3 ]

7 голосов
/ 12 января 2010

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

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

7 голосов
/ 12 января 2010

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

1 голос
/ 26 декабря 2014

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

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

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

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

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

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