General

Modificadores de acceso

Existen 4 modificadores de acceso:

  1. public
  2. private
  3. protected
  4. default

    

En una relación de herencia es importante diferenciar dos cosas:

    1. Una subclase puede invocar a un método de la clase padre

    2. Una subclase puede heredar a un método de su clase padre.

 

Para ver la diferencia anterior y conocer de mejor manera los modificadores de acceso, hagamos el siguiente ejercicio.    

Creamos una clase llamada Padre con el método público presentarse.

 

Creamos una subclase de Padre.

    

Ejecutamos nuestro ejemplo y observamos los resultados que no tienen nada de anormal.

Ahora vamos a crear otro paquete llamado “otropaquete” y a copiar la clase Hijo en ese nuevo paquete. Ambas clases Hijo correrán sin problema y darán el mismo resultado.

 

Posteriormente vamos a quitar el modificador de acceso “public” que tiene el método presentarse() de la clase Padre. Cuando un método no tiene modificador de acceso, toma el modificador “default”.

 

Con esto ahora tendremos un error en una de las clases y es sencillamente por qué el modificador “default” solo tiene un alcance dentro del mismo paquete.

 

Finalmente cambiemos el modificador de acceso “default” y pongámosle “protected”

 

Anteriormente teníamos 2 errores, uno en la línea 20 y otro en la línea 24, pero al cambiar a protected ahora observamos que solo existe un error en la línea 24! El de la línea 20 desapareció!! ¿Por qué?

La explicación es sencilla. El modificador protected tiene alcance a nivel de “paquete” y para aquellas clases fuera del paquete pero solo por Herencia. Cuando hay herencia los métodos de la clase padre se hacen propios de la clase hija, es decir, aunque no los vemos, esos métodos existen ahí en la clase hija. Por ello en la línea 20 ya no tenemos ningún error puesto que el modificador protected permite que el método sea heredado. Sin embargo, en la línea 24 continuamos teniendo un error ya que ahí no estamos llamando al método heredado, sino estamos invocando el método de la clase padre.

En conclusión:

  1. public.        Acceso desde cualquier clase de cualquier paquete
  2. protected.    Acceso desde cualquier clase solo del mismo paquete ó fuera del paquete pero por medio de Herencia.
  3. default.    Similar al protected pero no permite el acceso fuera del paquete ni siquiera por Herencia.
  4. private.    No hay que ser un experto ni adivino para deducir su efecto, pero esto que quede como tarea.

 

Un comentario en “Modificadores de acceso

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s