Хорошо так, у меня есть эта структура проекта:
пакет 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),
Пакеты - это уникальные идентификаторы. Вы не можете заставить их следовать правилам наследования. Package и SubPackages не являются аналогом классов Super и Sub.
Я не вижу никаких недостатков в том, чтобы сделать класс, который вы хотели использовать в подпакете, видимым для внешнего мира. Мне было бы интересно узнать, как этот критерий обрабатывается в C++/.net (поскольку я java-парень :))
.Лучше всего объявить (по умолчанию) конструктор(ы) SuperClass
как protected
. Таким образом, только классы из того же пакета и подклассы независимо от пакета смогут инстанцировать его и расширяться от него.
Почему бы не поместить их в один уровень пакета?
Можете ли вы как-то использовать композицию вместо наследования? Я сам стараюсь делать больше таких вещей после прочтения Effective Java. Не уверен, что это возможно с учетом ваших потребностей, но, возможно, стоит подумать.
Удачи.