sábado, 12 de julio de 2025

06 Php POO Clases Abstractas

 6. Clases Abstractas.

Cuando generamos las interfaces hemos de generar todos los métodos como públicos.

Si queremos desarrollar un método ya no podremos utilizar las interfaces, tendremos que utilizar las clases abstractas.

Estas se comportan de una manera similar a las interfaces, pero nos permiten definir los métodos como protegidos o extender la funcionalidad de algún método.

Para crear una clase abstracta lo hacemos igual que si creásemos una clase normal, pero delante escribimos abstract.

abstract class MiClaseAbstracta{

abstract protected function setNombre($nombre);

abstract protected function getNombre();

}

Para que esta clase se comporte como una interfaz, hemos de declarar los métodos como abstract.

Las clases abstractas no se pueden instanciar, sólo pueden ser extendidas desde otra clase.

// Cuandos generamos las interfaces hemos de definir todos los métodos como públicos.

abstract class MiClaseAbstracta{

abstract protected function setNombre($nombre);

abstract protected function getNombre();

// Extendemos un método desde la clase abstracta.

public function MiFuncion(){

echo "Estoy en MiFuncion en MiClaseAbstracta...<br>";

}

} // Fin Clase Abstracta.

class MiClase extends MiClaseAbstracta{

// Igual que las interfaces nos marca error al no definir los métodos abstractos de la clase abstracta...

// Podemos pasar mas párametros a nuestro metodo abstracto...

public function setNombre($nombre, $apellidos=""){

return "Método Set:<br>Nombre: ".$nombre.".<br>Apellidos: ".$apellidos.".<br>";

}

public function getNombre(){

return "Método Get Nombre...<br>";

}

} // Fin Clase MiClase

// Instancio la clase...

$MiObjeto= new MiClase;

echo "* Llamo a Public MiFunction en MiClaseAbstracta Heredada en MiClase...<br>";

$MiObjeto->MiFuncion();

echo "* Accedo al método abstract setNombre con dos parámetros Heredado de MiClaseAbstracta...<br>";

echo $MiObjeto->setNombre("Juan Manuel", "Barrós");

echo "* Accedo al método abstract getNombre sin parámetros Heredado de MiClaseAbstrata...<br>";

echo $MiObjeto->getNombre();

No hay comentarios:

Publicar un comentario

Gracias por vuestros aportes.