Herencia en PHP OOP

I

¿Qué es la herencia?

Cuando una clase deriva de otra clase, se conoce como herencia. Aquí hay algunos términos importantes relacionados con la herencia en PHP.

  • Clase para padres – La clase de la que se derivan las otras clases se denomina clase padre. También se conoce como clase base.
  • Clase infantil – La clase que se deriva de otra clase se llama clase secundaria. Hay algunos otros nombres para él también como clase de hoja o clase derivada.
Herencia en PHP

¿Cómo heredar una clase en PHP?

Una clase se puede heredar usando Se extiende palabra clave. mira el siguiente ejemplo.

<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  public function intro() {
    echo "The fruit is {$this->name} and the color is {$this->color}.";
  }
}

// Apple is inherited from Fruit
class Apple extends Fruit {
  public function message() {
    echo "I am from Fruit class or Apple one? ";
  }
}
$apple= new Apple("Apple", "red");
$apple->message();
$apple->intro();
?>

En el ejemplo anterior

  • Creamos una clase base o padre Fruit con algunas propiedades y métodos.
  • Creamos otra clase apple que extiende/hereda la clase padre Fruit usando la palabra clave extends.
  • Cree una instancia/objeto de manzana y acceda al método de la clase de frutas usando la herencia.

Terminando la introducción a la herencia en PHP, reunimos los siguientes puntos para usted.

  1. La herencia permite que la clase secundaria acceda a la construcción pública, los métodos y las propiedades de la clase principal.
  2. En el ejemplo anterior, podemos acceder al método de la clase apple utilizando su objeto, así como a los métodos de la clase principal.

Alcance de los modificadores de acceso protegido en Herencia

En el tutorial anterior, aprendimos que los atributos/métodos protegidos de una clase son accesibles dentro de la clase y las clases derivadas de ella.

Para comprender el alcance de los modificadores de acceso protegido en la herencia, veamos primero el siguiente ejemplo.

<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  protected function intro() {
    echo "I am $this->name and my color is $this->color";
  }
}

class Apple extends Fruit {
  public function message() {
    echo "I am from Fruit class or Apple one?";
  }
}

$apple = new Apple("Apple", "red");
$apple->message();
$apple->intro();
?>

En el ejemplo anterior:

  • Creamos una clase fruit con algunos atributos públicos y un método protegido.
  • Creamos otra clase apple, se extiende desde la clase Fruit y creamos su instancia.
  • Cuando intentamos acceder al método protegido de la clase Fruite usando el objeto de la clase Apple, da error porque estamos tratando de acceder al miembro protegido de la clase Fruit fuera de la clase derivada.

Pasemos a otro ejemplo, que en realidad es un poco modificado del ejemplo anterior.

<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  protected function intro() {
    echo "I am {$this->name} and my color is {$this->color}.";
  }
}

class Apple extends Fruit {
  public function message() {
    echo "Am I a fruit or an apple? ";
    $this -> intro(); // protected
  }
}

$apple = new Apple("Apple", "red");
$strawberry->message();
?>

En el ejemplo anterior, se puede acceder al método protegido de la clase Fruit en la clase apple porque estamos accediendo a él dentro de la clase.

Anular en la herencia

Primordial se refiere a redefinir los métodos de la clase principal en las clases secundarias, usando el mismo nombre. Mire el siguiente ejemplo de anulación en la herencia a continuación.

<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  public function intro() {
    echo "I am {$this->name} and my color is {$this->color}.";
  }
}

class Apple extends Fruit {
  public $weight;
  public function __construct($name, $color, $weight) {
    $this->name = $name;
    $this->color = $color;
    $this->weight = $weight;
  }
  public function intro() {
    echo "I am {$this->name}, my color is {$this->color}. Also, my weight is {$this->weight} kg.";
  }
}

$apple= new Apple("Apple", "red", 50);
$apple->intro();
?>

En el ejemplo anterior:

  • Creamos una clase principal Fruit y una clase secundaria apple que amplía la clase Fruit y redefine los métodos __contruct e intro en ella.
  • Tenga en cuenta que la clase secundaria apple define los métodos __construct e intro con el mismo nombre. Sin embargo, los parámetros pueden ser diferentes.
  • Creamos una instancia de clase Apple y pasamos los parámetros a la función de construcción.
  • Cuando llamamos al método de introducción usando la instancia de Apple, llama al método de introducción de la clase de Apple porque creamos la instancia del objeto de Apple usando el constructor de la clase de Apple.

Papel de la palabra clave final en la herencia

La final La palabra clave evita que la clase secundaria/derivada anule el método de la clase principal/base. Mire el siguiente ejemplo para comprender el uso de la palabra clave Final.

<?php
class Fruit {
  final public function intro() {
    // code
  }
}

class Apple extends Fruit {
// error to override the intro
  public function intro() {
    // code
  }
}
?>

En el ejemplo anterior, la clase Apple intenta anular el método de introducción. Dará error porque hemos usado la palabra clave final con el método intro de la clase Fruit.

Haga clic para un oficial referencia a la herencia de PHP.

Conclusiones

La herencia no solo es un concepto importante de la programación orientada a objetos en PHP, sino que en cualquier idioma juega un papel vital. Desde la perspectiva de la entrevista, las preguntas sobre la herencia son muy importantes. Entonces, debes practicar la herencia por tu cuenta.

Agregar comentario

Red de tutores

Aprende PHP de la A a la Z