Есть ли способ определить частный класс в Java, к которому могут обращаться только другие классы в том же пакете?
У меня всегда был этот вопрос в голове, почему определение private
классы в пакете в Java не возможны, как способ, которым мы можем определить его в namespace
в .Net
,
Допустим, у меня есть ds
пакет в моем проекте Java. У меня есть два класса в именах Stack
а также Queue
внутри этого пакета. Оба эти класса должны использовать другой класс во имя ListNode
, ListNode
требуется только для других классов в ds
пакет, и он не должен быть открыт для классов вне ds
пакет.
Я могу определить ListNode
как внутренние классы. Но в этом случае я должен определить это в обоих Stack
а также Queue
классы, и это также избыточно. Есть ли шаблон дизайна, чтобы обойти это? Если нет, пожалуйста, кто-нибудь хотя бы объяснит мне, почему это невозможно в Java!
2 ответа
В следующей таблице показан доступ к элементам, разрешенным каждым модификатором.
Access Levels
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N
Можете заглянуть в пакет приватных классов. документы
Если вы опускаете public/private/protected из вашего класса, он доступен только другим классам в том же пакете