¿Por qué no hay un modificador de visibilidad de subclase en Java?

En más de una ocasión me he encontrado deseando una visibilidad variable que no es posible en Java. Quería que ciertos miembros fueran visibles dentro de su propia clase y dentro de cualquier subclase, pero no para el resto del paquete o para el resto del mundo. En otras palabras, quería esto:

Modifier        Class     Package   Subclass  World
sub-class       Y         N         Y         N

Sin embargo, los diseñadores de Java solo me dieronest:

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

El caso típico cuando quiero algo como esto es cuando se crea una clase abstracta. A veces encuentro que el padre abstracto necesita acceso a ciertos miembros, pero los niños concretos también lo necesitan. Puedo darles este acceso haciendo que los miembrosprotected, pero eso abre la accesibilidad al resto del paquete cuando realmente no quiero.

ara ser completamente claro, sé que tal modificador esn posible en Java. Mi pregunta es ¿por qué ese modificador no está incluido en Java? Parece (para mí) un nivel de visibilidad más natural que cualquiera de lasprotected o el predeterminado. ¿La razón es que no es lo suficientemente importante como para incluirla, o está más relacionada con los posibles efectos secundarios que no he considerado?

Respuestas a la pregunta(3)

Su respuesta a la pregunta