2010-01-12 10 views

Respuesta

7

Una razón: si su clase implementa alguna interfaz (o amplía alguna clase abstracta con métodos públicos abstractos), entonces no puede reducir la visibilidad de los métodos implementados.

+3

También las subclases públicas heredarán los métodos como públicos. –

6

La clase no pública podría implementar una interfaz pública. Esto significaría que las clases fuera del paquete no podrían crear una instancia de esta clase o crear referencias de ese tipo, pero aún podrían invocar métodos si pasaron una instancia.

Por ejemplo, una clase de fábrica pública podría crear una instancia de una clase no pública en su paquete y devolverla.

+0

Incluso una interfaz no pública tiene métodos públicos. –

0

Es una hermosa combinación de Seguridad y Usabilidad en uno.

Marcaría una clase con acceso predeterminado si quiero que tenga, bueno, acceso al paquete (para que ningún otro paquete pueda usarlo o mejor cambie el código) y marque un método público, estoy haciendo el método accesible para todas las otras clases, independientemente del paquete al que pertenecen.

¿Cómo funciona eso? Una clase que es lo suficientemente segura para realizar toda la implementación del código complejo y lo suficientemente utilizable para dar la salida al usuario que desea usarla.

¿Cómo puede alguien usar eso? Bueno, escribes código para ayudarlos a usarlo al crear una clase pública que amplía esta clase predeterminada. Usted crea una instancia de esta Subclase pública en cualquier paquete (después de importar of-course) y tiene todos los métodos marcados como públicos.

¡Tienes una clase que hace tu magia que todos pueden usar sin darle a nadie más una idea de cómo lo hiciste!

Cuestiones relacionadas