2011-11-19 10 views

Respuesta

32

paquete. Son visibles para otras clases en el mismo paquete.

FWIW, suelo usar mi propia anotación no-operativa @Package en estos, solo para dejar en claro que sé lo que estoy haciendo, que no me olvidé de algo. Aunque es el predeterminado, probablemente el acceso al paquete se use menos en código de alta calidad que cualquiera de las otras tres posibilidades, con una gran excepción:

En algunos estilos de pruebas unitarias, es deseable poder acceder a métodos o campos que normalmente son privados Una forma de proporcionar acceso es configurarlos para el acceso al paquete, y poner la clase de prueba de la unidad en el mismo paquete (pero generalmente en un árbol de directorio de "prueba diferente"). Algunos desarrolladores piensan que esto es una mala práctica, que en general es malo usar métodos privados (o paquetes para pruebas) en las pruebas.

+4

http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html – LukeH

23

En Java existen visados ​​públicos, protegidos, de paquete (por defecto) y privados; ordenado desde el más visible al menos.

Si no lo especifica, de forma predeterminada la visibilidad es paquete.

package mytest.myvisibility; 

public class MyClass 
{ 
    public int myPublicInt; // visible to all 
    protected myProtectedInt; // visible to subclasses of MyClass and to other members of the mytest.myvisibility package 
    int myPackageInt; // visible only to other members of the mytest.myvisibility package 
    private int myPrivateInt; // visible only to MyClass objects. 
} 
+0

Esto no es del todo cierto (ver documento proporcionado por Oracle @LukeH arriba). Los artículos protegidos también son visibles en el paquete actual. – Kloe2378231

+3

actualizado - elaborado sobre la visibilidad del "paquete", y hace que el orden de las visibilidades sea consistente en la descripción y en el ejemplo del código. –

Cuestiones relacionadas