Uno de los aspectos más importantes de la programación orientada a objetos y por ende de Java, es la encapsulación, que consiste básicamente en ocultar la información que no es conveniente o necesaria para realizar una determinada tarea.
En Java, para acceder a las variables y métodos miembro de un objeto, hay que tener en cuenta desde donde lo hacemos.
Desde dentro de la propia clase:
- Todos los miembros de una clase son accesibles desde la propia clase. Por lo tanto los métodos no necesitan que las variables miembro sean pasadas como argumento.
- Los miembros private de una clase sólo son accesibles para la propia clase.
- Si el constructor de una clase es private, sólo un método static de la propia clase puede crear objetos.
Desde una subclase:
- Las subclases lo heredan todo de sus superclases, incluso lo private. Pero sólo pueden acceder las variables private de la supercalse a través de métodos public, protected o package de la superclase
Desde otras clases del paquete:
- Desde una clase de un paquete se tiene acceso a todos los miembros que no sean private de las demás clases del mismo paquete.
Desde otras clases fuera del paquete:
- Los métodos y variables son accesibles si la clase es public y el miembro es public.
- También son accesibles si la clase que accede es una subclase y el miembro es protected.
Un tanto lioso, pero en cuanto uno se pone a hacer clases en Java, conviene tenerlo a mano. Podemos resumirlo en que con "private" hacemos que una variable miembro o una función miembro de una clase sea accesible sólo desde la misma clase, con protected restringimos el acceso al paquete y por defecto la visibilidad es el paquete (aunque fuera del paquete haya clases que hereden).
Puedes hacer trackback a esta entrada usando: http://www.error500.net/tdb/mt-tb.cgi/98 .