sábado, 12 de julio de 2025

04 Php POO Encapsulacion Public Protected Private

 4. Encapsulamiento.

Con la palabra clave public, lo que hacíamos era darles una visibilidad pública a nuestras propiedades.

Podríamos acceder a nuestras propiedades desde cualquier lado, por medio de un objeto instanciado o un heredado de una clase padre.

Cuando no definimos si una propiedad o método es de un tipo o de otro, php entiende por defecto que es de tipo público.

Existen tres formas de declarar nuestras propiedades, pública, protegida y privada.

Este proceso se define como encapsulamiento.

Si declaramos una propiedad como protegida o privada no vamos a poder acceder directamente a su valor.

¿Cómo vamos a acceder a estas propiedades?

Sólo podremos acceder mediante algún método que hayamos definido en nuestra clase.

¿Cuál es la diferencia entre protegida y privada?

Si yo extiendo una clase, en la clase hija. Al acceder mediante un método a las propiedades de la clase padre, sobre escribiendo el método, accederemos sólo a las públicas y protegidas. Pero no a las privadas.

De este modo la propiedad privada sólo puede ser accedida desde la clase padre y desde ningún otro lugar.

Si no sobre escribo el método de la clase padre puedo acceder a la propiedad privada, pues estoy accediendo a la propiedad privada desde la propia clase padre.

Podremos modificar las propiedades públicas y protegidas, pero no las propiedades privadas.

Del mismo modo que podemos proteger nuestras propiedades, podemos proteger nuestros métodos.

Clase:

// Definimos la clase alumno

class alumno{

// Definimos tres propiedades.

public $nombre = "Juan Manuel";

protected $apellidos = "Barros Pazos";

private $dni = "5555555K";

// Definimos un método.

public function datosAlumno(){

echo "Nombre: ".$this->nombre." ".$this->apellidos.". DNI: ".$this->dni.".<br>";

}

} // Fin Clase alumno


// Pedimos que estas clases se extiendan de una clase padre.

class alumno2 extends alumno{

// Podemos sobreescribir la propiedad publica y protegida, pero no la privada.

public $nombre = "Maria Dolores";

protected $apellidos = "Perez Sanchez";

// La diferencia entre protegida y privada...

// Sobreescribimos el método...

public function datosAlumno(){

echo "Nombre: ".$this->nombre." ".$this->apellidos.".<br>";

echo "DNI: ".$this->dni.".<br>";

// No podemos acceder a la propiedad privada, pero sí a la pública y protegida.

}

} // Fin clase alumno2


    class alumno3 extends alumno{ }


No hay comentarios:

Publicar un comentario

Gracias por vuestros aportes.