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.