Saltar al contenido

Diferencia entre public, protected o private

que es public protected private en programacion

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).