Почему подпакеты не могут видеть пакет частные классы?

Хорошо так, у меня есть эта структура проекта:

пакет A.B

  • класс SuperClass (этот класс является отмеченным частным пакетом),

пакет A.B.C

  • класс SubClass (наследовался суперклассу),

Я не сделал бы SuperClass публично видимый... Это - действительно просто служебный класс для этого определенного проекта (A.B).

Мне кажется, что SubClass должен смочь видеть SuperClass, потому что пакет A.B.C является подпакетом A.B..., но дело обстоит не так.

Каков был бы лучший способ решить этот вопрос? Я не думаю, что имеет смысл перемещать все в A.B.C до A.B или спускать A.B к A.B.C... главным образом, потому что, вероятно, будет A.B.D, который наследовался материалу в A.B также...

Я немного плохо знаком с Java, так быть хорошим :D (я - C++ и парень.NET),

10
задан Polaris878 21 March 2010 в 22:54
поделиться

3 ответа

Пакеты - это уникальные идентификаторы. Вы не можете заставить их следовать правилам наследования. Package и SubPackages не являются аналогом классов Super и Sub.

Я не вижу никаких недостатков в том, чтобы сделать класс, который вы хотели использовать в подпакете, видимым для внешнего мира. Мне было бы интересно узнать, как этот критерий обрабатывается в C++/.net (поскольку я java-парень :))

.
9
ответ дан 3 December 2019 в 23:12
поделиться

Лучше всего объявить (по умолчанию) конструктор(ы) SuperClass как protected. Таким образом, только классы из того же пакета и подклассы независимо от пакета смогут инстанцировать его и расширяться от него.

6
ответ дан 3 December 2019 в 23:12
поделиться

Почему бы не поместить их в один уровень пакета?

Можете ли вы как-то использовать композицию вместо наследования? Я сам стараюсь делать больше таких вещей после прочтения Effective Java. Не уверен, что это возможно с учетом ваших потребностей, но, возможно, стоит подумать.

Удачи.

-1
ответ дан 3 December 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: