Herencia múltiple en PHP

La herencia múltiple es la propiedad de los lenguajes de programación orientada a objetos en los que la clase secundaria o la subclase pueden heredar las propiedades de las múltiples clases principales o superclases.

PHP no admite la herencia múltiple, pero al usar Interfaces en PHP o al usar Rasgos en PHP en lugar de clases, podemos implementarlo.

Rasgos (uso de clase junto con rasgos): el rasgo es un tipo de clase que permite la herencia múltiple. Las clases, las clases de casos, los objetos y los rasgos no pueden extender más de una clase, pero pueden extender múltiples rasgos al mismo tiempo.
Sintaxis:

class child_class_name extends parent_class_name {
    use trait_name;
    ...
    ...
    child_class functions
}

Ejemplo:

<?php
  
// Class Geeks
class Geeks {
  public function sayhello() {
     echo "Hello";
  }
}
  
// Trait forGeeks
trait forGeeks {
  public function sayfor() {
     echo " Geeks";
  }
}
  
class Sample extends Geeks {
   use forGeeks;
   public function geeksforgeeks() {
      echo "\nGeeksforGeeks";
  } 
}
  
$test = new Sample();
$test->sayhello();
$test->sayfor();
$test->geeksforgeeks();
?>
Producción:

Hello Geeks
GeeksforGeeks

En el programa anterior, se han utilizado «rasgos» junto con la clase principal. Hay una «clase» llamada «Geeks» que contiene la función sayhello() y un «rasgo» llamado «forGeeks» que contiene la función geeksforgeeks() y hay una clase secundaria llamada «Sample» y estamos creando el objeto de esta clase llamado » test” y usándolo estamos invocando todas las funciones de una clase y un rasgo.

Rasgos (Uso de Múltiples Rasgos): Se pueden insertar Múltiples Rasgos en una clase enumerándolos en la declaración de uso, separados por comas.
Sintaxis:

class child_class_name {
    use trait_name;
    ...
    ...
    child_class functions
}

Ejemplo:

<?php
  
// trait Geeks
trait Geeks {
  public function sayhello() {
     echo "Hello";
   }
 }
  
// trait forGeeks
trait forGeeks {
  public function sayfor() {
     echo " Geeks";
   }
 }
  
class Sample {
  use Geeks;
  use forGeeks;
  public function geeksforgeeks() {
      echo "\nGeeksforGeeks";
   } 
}
  
$test = new Sample();
$test->sayhello();
$test->sayfor();
$test->geeksforgeeks();
?>
Producción:

Hello Geeks
GeeksforGeeks

En el programa anterior se han utilizado «rasgos». Hay dos rasgos llamados «Geeks» que contienen la función sayhello() y «forGeeks» que contiene la función geeksforgeeks() respectivamente y hay una clase secundaria «Sample» y estamos creando el objeto de esta clase llamado «test» y usándolo estamos invocando todas las funciones de los rasgos.

Interfaz (usando la clase junto con la interfaz):
Sintaxis:

class child_class_name extends parent_class_name implements interface_name1, ...

Ejemplo:

<?php
  
class A {
   public function insideA() {
    echo "I am in class A";
     }
}
  
interface B {
   public function insideB();
}
  
class Multiple extends A implements B {
  
    function insideB() {
        echo "\nI am in interface";
    }
  
    public function insidemultiple() {
    echo "\nI am in inherited class";
    }
}
  
$geeks = new multiple();
$geeks->insideA();
$geeks->insideB();
$geeks->insidemultiple();
?>
Producción:

I am in class A
I am in interface
I am in inherited class

En el programa anterior, la interfaz «B» se ha utilizado junto con la clase «A» para implementar la herencia múltiple. El punto importante a recordar es que no puede definir la función dentro de la interfaz, debe definirse dentro de la clase secundaria «Múltiple». Estamos invocando todas las funciones usando el objeto de clase secundaria (Múltiple) llamado «geeks».

Interfaz (usando interfaz múltiple):

Sintaxis:

class child_class_name implements interface_name1, interface_name2, ...

Ejemplo:

<?php
  
interface C {
   public function insideC();
}
  
interface B {
   public function insideB();
}
  
class Multiple implements B, C {
  
    // Function of the interface B
    function insideB() {
        echo "\nI am in interface B";
    }
  
    // Function of the interface C
    function insideC() {
        echo "\nI am in interface C";
    }
  
    public function insidemultiple()
    {
        echo "\nI am in inherited class";
    }
}
  
$geeks = new multiple();
$geeks->insideC();
$geeks->insideB();
$geeks->insidemultiple();
?>
Producción:

I am in interface C
I am in interface B
I am in inherited class

En el programa anterior se han utilizado múltiples interfaces para implementar la herencia múltiple. En el ejemplo anterior, hay dos interfaces llamadas «B» y «C» que desempeñan el papel de las clases base y hay una clase secundaria llamada «Múltiple» y estamos invocando todas las funciones usando su objeto llamado «geeks».

PHP es un lenguaje de secuencias de comandos del lado del servidor diseñado específicamente para el desarrollo web. Puede aprender PHP desde cero siguiendo este tutorial de PHP y ejemplos de PHP .

Publicación traducida automáticamente

Artículo escrito por AmanAgarwal6 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *