los modificadores de nivel de acceso determinan si otras clases pueden usar un campo en particular o invocar un método en particular. Hay dos niveles de control de acceso:
- En el nivel superior –
public
, o paquete-privado (sin modificador explícito). - En el nivel de miembro
public
,private
,protected
, o paquete-privada (no explícita modificador).,
una clase puede declararse con el modificador public
, en cuyo caso esa clase es visible para todas las clases en todas partes. Si una clase no tiene modificador (el predeterminado, también conocido como paquete-privado), solo es visible dentro de su propio paquete (los paquetes se denominan grupos de clases relacionadas aprenderá sobre ellos en una lección posterior.)
en el nivel de miembro, también puede usar el modificador public
o no modificador (paquete-privado) al igual que con las clases de nivel superior, y con el mismo significado., Para los miembros, hay dos modificadores de acceso adicionales: private
y protected
. El modificador private
especifica que solo se puede acceder al miembro en su propia clase. El modificador protected
especifica que el miembro solo puede ser accedido dentro de su propio paquete (como con package-private) y, además, por una subclase de su clase en otro paquete.
la siguiente tabla muestra el acceso a los miembros permitido por cada modificador.,Modifier
public
protected
private
The first data column indicates whether the class itself has access to the member defined by the access level., Como puedes ver, una clase siempre tiene acceso a sus propios miembros. La segunda columna indica si las clases en el mismo paquete que la clase (independientemente de su parentesco) tienen acceso al miembro. La tercera columna indica si las subclases de la clase declarada fuera de este paquete tienen acceso al miembro. La cuarta columna indica si todas las clases tienen acceso al miembro.
Los niveles de Acceso te afectan de dos maneras., En primer lugar, cuando utiliza clases que provienen de otra fuente, como las clases de la plataforma Java, los niveles de acceso determinan qué miembros de esas clases pueden usar sus propias clases. Segundo, cuando escribes una clase, necesitas decidir qué nivel de acceso debe tener cada variable miembro y cada método de tu clase.
veamos una colección de clases y veamos cómo los niveles de acceso afectan la visibilidad. La siguiente figura muestra las cuatro clases en este ejemplo y cómo están relacionadas.,
clases y paquetes del ejemplo utilizado para ilustrar los niveles de acceso
la siguiente tabla muestra dónde los miembros de la clase Alpha son visibles para cada uno de los modificadores de acceso que se pueden aplicar a ellos.,ha
public
protected
private
If other programmers use your class, you want to ensure that errors from misuse cannot happen., Los niveles de acceso pueden ayudarte a hacer esto.
- utilice el nivel de acceso más restrictivo que tenga sentido para un miembro en particular. Use
private
a menos que tenga una buena razón para no hacerlo. - Evite los campos
public
excepto las constantes. (Muchos de los ejemplos en el tutorial usan campos públicos. Esto puede ayudar a ilustrar algunos puntos de forma concisa, pero no se recomienda para el código de producción.) Los campos públicos tienden a vincularlo a una implementación en particular y limitan su flexibilidad para cambiar su código.