En Java, hay cuatro modificadores de acceso disponibles para los métodos:
public
- Cualquier clase puede usar este método.
protected
- las clases en el mismo paquete y las subclases en cualquier paquete pueden usar este método.
private
- Solo esta clase puede usar este método.
no modifier
("paquete privado"): solo las clases del mismo paquete pueden utilizar este método.
Lo que sucede a menudo es que quiero tener métodos útiles en una superclase, que todas las subclases puedan usar. Pero no tendría sentido para otras clases acceder a este método, y en cierto sentido rompería la encapsulación.
Así que tengo que declarar estos métodos útiles en la superclase public
o protected
, que los expone a todas las demás clases al menos en el paquete. Aunque solo están destinados a ser utilizados por las subclases.
¿Hay alguna razón por la cual no hay un subclasses-only
modificador de acceso en Java? Me parece muy extraño. ¿Me estoy perdiendo de algo?
Además, un subclasses-only
modificador de acceso también sería útil para cuando desee exponer variables solo a subclases. Lo que a mí me pasa mucho.