11.09.2018 Views

Aprender a desarrollar un sitio Web con PHP y MySQL

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

La clase Pez no tiene acceso al atributo peso de la clase Animal, ya que es privado.<br />

En <strong>con</strong>clusión, se recomienda poner los atributos en visibilidad protected, ya que la propia clase, las<br />

clases hijas y las que heredan tienen acceso a este atributo.<br />

3. Sustitución<br />

La Sustitución sirve para modificar <strong>un</strong> método que ya existe en <strong>un</strong>a clase madre, <strong>con</strong> el objetivo de<br />

cambiar el comportamiento. El método existe en dos clases diferentes y según el <strong>con</strong>texto se ejecuta el<br />

de la clase hija o el de la clase madre.<br />

Por ejemplo, para sustituir el método comer_animal(Animal $animal_comido) de la clase<br />

Animal <strong>con</strong> el objetivo de inicializar el tipo de pez comido, debe añadir este método en la clase Pez y<br />

aplicarlo de otra manera:<br />

Añada en la clase Pez.class.php:<br />

//método sustituido<br />

public f<strong>un</strong>ction comer_animal(Animal $animal_comido)<br />

{<br />

if (isset($animal_comido->raza)){<br />

$animal_comido->raza="";<br />

}<br />

if (isset($animal_comido->vive_en_el_mar)){<br />

$animal_comido->vive_en_el_mar="")<br />

}<br />

}<br />

El problema es que este método inicializa correctamente el atributo vive_ en_ el_mar del pez comido,<br />

pero ya no inicializa su peso y su color. No puede cambiar aquí su peso y su color, ya que estos<br />

atributos son privados en la clase Animal.<br />

La solución está en llamar al método comer_animal(Animal $animal_comido) de la clase<br />

Animal en el método comer_animal(Animal $animal_comido) de la clase Pez:<br />

//Método sustituido<br />

public f<strong>un</strong>ction comer_animal(Animal $animal_comido)<br />

{<br />

// al método comer_animal() de la clase padre,<br />

// es decir Animal<br />

padre::comer_animal($animal_comido);<br />

}<br />

}<br />

}<br />

if (isset($animal_comido->raza)){<br />

$animal_comido->raza="";<br />

if (isset($animal_comido->vive_en_el_mar)){<br />

$animal_comido->vive_en_el_mar="")<br />

www.FreeLibros.me

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!