Vamos a crear la clase Persona con las propiedades nombre (obligatoria) y DNI. Crearemos un método ‘saludo’ que nos devuelva un string con ‘Hola’+nombre
De ahí vamos a derivar la clase ‘caballero’ que tendrá la propiedad ‘tratamiento’ (obligatoria) . Sobre escribiremos el método ‘saludo’ para que devuelva ‘Hola’+tratamiento+nombre.
Añadiremos la propiedad renta de tipo int.
Vamos a derivar la clase ‘plebeyo’. Sobre escribiremos el método saludo para que devuelva ‘Hola’+nombre+’¿Qué pasa?’
Poned los getters y setters que hagan falta, pero que sea obligatorio poner un valor.
class Persona {
private $nombre;
private $dni;
function __construct($nombre) {
$this->nombre = $nombre;
}
function saludo() {
return "Hola " . $this->nombre;
}
function __get($name) {
return $this->$name;
}
function __set($name, $value) {
if (empty($value)) {
throw new Exception("La propiedad $name no puede estar vacía");
}
$this->$name = $value;
}
}
class Caballero extends Persona{
protected $tratamiento;
protected $renta;
function __construct($nombre,$tratamiento) {
parent::__construct($nombre);
$this->__set("tratamiento",$tratamiento);
}
function saludo(){
return "Hola ".$this->tratamiento." ".$this->nombre;
}
}
class Plebeyo extends Persona{
function saludo(){
return parent::saludo()." ¿Qué pasa?";
}
}