Cuando estamos definiendo una clase en un lenguaje de programación orientado a objetos, las variables y los métodos pueden estar en uno de los siguientes niveles de acceso:
- private
- protected
- public
- default (depende del lenguaje)
Estas palabras reservadas nos indican el nivel de visibilidad de cada una de las partes dónde lo declaramos.
Veamos que significa cada uno de ellos y que diferencias podríamos encontrar.
Qué es private en programación
Una clase, función o variable que este indicada como private
indica que sólo está accesible a los métodos de la misma clase en la que la variable o método se ha declarado.
Vamos a poner un ejemplo. Imagina que estás dentro de una clase llamada Persona
, y declaras una variable como private
. En java sería algo así:
private int Edad;
La variable Edad
que hemos creado sólo será visible dentro de la clase. Si intentamos acceder desde fuera de esta manera
Persona person;
person = new Persona();
person.Edad = 20;
La tercera línea nos dará error, porque no es visible (está oculta o encapsulada en la clase).
Qué es protected en programación
Una clase, variable o método indicado con el modificador protected
es accesible desde los métodos definidos en las clases que pertenecen al mismo paquete, al igual que hemos visto con private
.
Pero, además es accesible desde cualquier función de cualquier subclase, es decir, de las clases que heredan donde se han definido.
El acceso protegido es apropiado para una subclase de la clase, pero no para una clase sin relación.
Un ejemplo parecid al anterior, si declaramos la variable Edad
así:
protected int Edad;
Tendremos el mismo resultado que el anterior. Pero si además heredamos la clase Persona
, la variable es visible en la nueva clase, y será tratada como privada.
Hay que destacar que si volviésemos a heredar la nueva clase ya no tendríamos acceso.
Qué es public en programación
Cuando declaramos como public
, se puede acceder de manera universal a las clases, variables y métodos que hemos creado.
Al poner esta palabra reservada, estamos diciendo que siempre se podrá acceder desde cualquier lugar del código, ya que es el nivel más permisivo de todos.
Otros modificadores de lenguajes
Hasta ahora hemos visto los modificadores que siempre veremos en la mayoría de lenguajes de programación, pero existen otros que debemos conocerlos para entender y escribir nuestro código fuente.
Qué es default en Java
Una variable o un método es por defecto (default
) si no tienen ninguno de los modificadores que hemos visto anteriormente.
Esto permite acceso desde cualquier método que pertenece a las clases que sean miembros del mismo paquete donde se ubica la variable, función o clase.
Estos paquetes se llaman package-friendly o package-private.
Qué es internal en C#
En C# existe el modificador internal
, que es el equivalente al default
que hemos visto en Java.
Sólo es visible dentro del mismo ensamblado (o paquete).