La Herencia es la característica de los lenguajes orientados a objetos, que le permite a una clase (llamada la sublclase o la clase hijo) heredar todas los miembros de otra (llamada la superclase o la clase padre). En PHP una clase hereda de otra, mediante el uso de la palabra clave extends.

Así podemos agregar una nueva clase llamada estudiante, que hereda de persona, a nuestra carpeta clases (creada en el artículo Objetos en PHP), como sigue:

<?php
    include("clases/persona.php");
    class Estudiante extends Persona {
        private $carrera;
		
	function Estudiante($nom, $carr) {
		parent::__construct($nom);
		$this->carrera = $carr;
	}

	function  setCarrera($a) {
		$this->carrera = $a;
	}

	function  getCarrera() {
		return $this->carrera;
	}
				
	function daExamen($nomExamen, $nota) {
		return "Examen de la asignatura <b>".$nomExamen. "</b> dado, con nota <b>".$nota."</b>" ;
	}
   }
?>

Ahora, modificamos el archivo default.php, como sigue:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Objetos en PHP</title>
    </head>
    <body>
        <h1>OOP en PHP</h1>
        <hr><p>
        <?php
            include("clases/estudiante.php");
            $objPersona = new Persona("Giusseppe");
            echo "El objeto <span style='color:red; font-weight:bold'> objPersona</span> se llama ".
                 $objPersona->getNombre()."<br>";  
            $objPersona->Saluda("Buongiorno!"); 
         ?>
        </p>
         <h3>Herencia en PHP</h3> 
         <hr><p>
         <?php
            //Ahora creamos un estudiante
            $objEstudiante = new Estudiante("Katia","Licenciatura en Turismo");
            echo "El estudiante " .$objEstudiante->getNombre()." estudia ".$objEstudiante->getCarrera()."<br>";
            echo $objEstudiante->saluda("Good morning!");
            echo $objEstudiante->daExamen("Historia", 8);
        ?></p>
    </body>
</html>

La clase Persona, definida en el archivo persona.php, permanece sin cambios.

La salida de la página default.php es la que se observa en la figura 1:

Figura 1 - Salida de la pagina al ser vista con Internet Explorer

Detalles de la implementación

Como se ve, ahora la página principal incluye el archivo estudiante.php, en lugar del archivo persona.php, ya que este último archivo es incluído en el primero y se produce una cadena de inclusiones: La página incluye el archivo estudiante.php, que a su vez incluye el archivo persona.php.

A pesar de no incluir directamente el archivo persona, la página puede instanciar un objeto persona y utilizar sus miembros.

Luego, la página instancia un objeto estudiante y lo utiliza.

Es interesante ver el constructor de la clase Estudiante:

 

function Estudiante($nom, $carr) {
    parent::__construct($nom);
    $this->carrera = $carr;
}

A pesar que la clase estudiante no tiene directamente definida una propiedad nombre, en realidad la hereda de Persona y por eso podemos usar un constructor pasándole no sólo la carrera, sino también el nombre del estudiante. Dentro del constructor del objeto estudiante llamamos al contructor de la clase padre con la línea de código:

parent::__construct($nom);
respag     

Panamá © 2013

Haga su donación para colaborar con La Escuela del Programador

La Escuela del Programador es un sitio web sin anuncios, sin ánimo de lucro, no es un sitio web comercial. Es el sueño de compartir con todos, muchos años de una gran pasión. Si realmente encuentra este sitio útil y lo aprovecha, le pido su generosa y no importa cuán modesta colaboración, simplemente para afrontar los costos de mantener este sitio disponible en internet.
No deseo lucrar con este sitio, ya que lo hago desinteresadamente, sólo le pido que, si puede, aporte (desde un dólar hasta lo que crea que puede dar), para afrontar los costos de dominio y hosting. Muchísimas gracias y ojalá juntos podamos hacer un sitio que sea una buena fuente de aprendizaje de programacíon en español.

Si no se siente en condiciones de colaborar, igualmente será bienvenido al sitio, es libre para todos y será un placer que encuentre mis artículos provechosos, pero si realmente me ayuda con una donación minima, seguramente, colaborará para que La Escuela del Programador se mantenga en la Web y crezca, conviertiendo a este sitio hecho con mucha pasión, dedicación y esfuerzo, en una buena fuente de aprendizaje.

Mis saludos cordiales y gracias por interesarse en mi sitio.

Rubén E. Spagnuolo
respag
Panamá - © 2012