2010-03-21 18 views
7

Bien, entonces, tengo esta estructura del proyecto:¿Por qué los subpaquetes no pueden ver las clases privadas del paquete?

paquete AB

  • clase SuperClass (esta clase está marcada paquete privado)

paquete ABC

  • clase SubClass (hereda de la clase superior)

Prefiero no hacer que SuperClass sea públicamente visible ... En realidad, es solo una clase de utilidad para este proyecto específico (A.B).

Me parece que SubClass debería poder ver SuperClass, porque el paquete A.B.C es un subpaquete de A.B ... pero este no es el caso.

¿Cuál sería la mejor manera de resolver este problema? No creo que tenga sentido mover todo en ABC hasta AB o mover AB hacia ABC. Principalmente porque probablemente habrá un ABD que hereda cosas de AB también ...

Estoy un poco nuevo para Java, así que se agradable: D (soy un chico de C++ y .NET)

Respuesta

9

Los paquetes son identificadores únicos. No puedes hacer que sigan las reglas de herencia. El paquete y los SubPaquetes no son analógicos para las clases Super y Sub.

No veo ningún defecto en hacer que la clase que desea utilizar en el paquete secundario sea visible para el mundo exterior. Me interesaría saber cómo este criterio se maneja en C++ /. Net (como yo soy un tipo java :))

+0

Sí, pensé que estaba simplemente malentendiendo paquetes – Polaris878

+2

En .NET Me gustaría simplemente poner las clases en carpetas y tenerlas marcadas internamente :) – Polaris878

+0

@ Polaris878: Niza. – bragboy

6

Su mejor apuesta es declarar el constructor (por defecto) (s) de SuperClass como protected. De esta forma, solo las clases en el mismo paquete y subclases, independientemente del paquete, pueden crear una instancia y extenderse desde allí.

-1

¿Por qué no ponerlos en el mismo nivel de paquete?

¿Podría de alguna manera usar composición en lugar de herencia? Intenté hacer más de esto yo mismo después de leer Java efectivo. No estoy seguro si esto es posible según sus necesidades, pero podría valer la pena considerarlo.

Buena suerte.

+1

No los quiero en el mismo paquete porque tendré entre 20 y 30 clases que dependerán de la clase superior, y estoy tratando de mantener todo organizado, jajaja. – Polaris878

Cuestiones relacionadas