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?"; } }