El polimorfismo se da cuando un objeto puede ser utilizado de la misma forma que otro objeto de un tipo parecido.
Por ejemplo, si el objeto B hereda del objeto A, el objeto B se puede utilizar de la misma forma que A.
Ejemplo:
Por ejemplo, si el objeto B hereda del objeto A, el objeto B se puede utilizar de la misma forma que A.
Ejemplo:
<?php
class Hija extends ClasePadre {
public function UnaFuncion() {
parent::unaFuncion();
}
}
?>
Se utiliza la palabra reservada parent para referenciar a métodos y atributos de la clase padre.
Ámbitos
La visibilidad de métodos y atributos está delimitada en tres niveles:
- public indica que un método o atributo es accesible desde cualquier punto de PHP.
- private sólo permite acceder a métodos o atributos de la propia clase en la que está definido.
- protected indica que sólo puede acceder a métodos o atributos desde la propia clase o desde clases herederas.
- static indica que el método o atributo es accesible sin necesidad de instanciar la clase. Es muy útil para compartir variables entre todas las instancias de una misma clase. La palabra static también se puede utilizar dentro de métodos o funciones para definir una variable que es global a todas las llamadas de esa función.
- abstract indica que la clase no puede ser instanciada, sólo puede ser extendida por otra clase.
- final indica que el método no puede ser redefinido en las clases herederas.
Ejemplo
<?php
abstract class Nodo {
private $debugMessages;
public function __construct() {
$this->debugMessages = array();
$this->debug(__CLASS__." constructor.");
}
public function __desctruct() {
$this->debug(__CLASS__." destructor.");
$this->dumpDebug();
}
protected function debug($msg) {
$this->debugMessages[] = $msg;
}
private function dumpDebug() {
echo implode("\n", $this->debugMessages);
}
public abstract function getView();
}
?>