Clases abstractas en PHP

Las clases abstractas son las clases en las que al menos un método es abstracto. A diferencia de C++, las clases abstractas en PHP se declaran con la ayuda de una palabra clave abstracta. El uso de clases abstractas es que todas las clases base que implementan esta clase deben implementar los métodos abstractos declarados en la clase principal. Una clase abstracta puede contener métodos abstractos y no abstractos.

<?php
  
// Abstract class example in PHP
abstract class base
{
    // This is abstract function
    abstract function printdata();
      
    // This is not abstract function
    function pr()
    {
        echo "Base class";
    }
}
?>

Los siguientes son algunos datos importantes sobre las clases abstractas en PHP.

  • Al igual que Java, PHP tampoco puede crear una instancia de clase abstracta.

    Ejemplo:

    <?php
      
    // Abstract class
    abstract class Base {
        // This is abstract function
        abstract function printdata();
    }
    class Derived extends base {
        function printdata() {
            echo "Derived class";
        }
    }
      
    // Uncommenting the following line will 
    // cause compiler error as the line tries
    // to create an instance of abstract class. 
    // $b = new Base(); 
          
    $b1 = new Derived;
    $b1->printdata();
    ?>
    Producción:

    Derived class
    
  • Al igual que C++ o la clase abstracta de Java en PHP, también puede contener un constructor.

    Ejemplo:

    <?php
      
    // Abstract class
    abstract class Base {
        function __construct() {
            echo "this is abstract class constructor ";
        }
      
        // This is abstract function
        abstract function printdata();
    }
    class Derived extends base {
        function __construct() {
            echo "\n Derived class constructor";
        }
        function printdata() {
            echo "\n Derived class printdata function";
        }
    }
    $b1 = new Derived;
    $b1->printdata();
    ?>
    Producción:

    Derived class constructor
     Derived class printdata function
    
  • A diferencia de Java, no se puede crear una clase abstracta que no contenga al menos un método abstracto en PHP. Si ejecutamos el siguiente ejemplo, mostrará un mensaje de error.

    Ejemplo:

    <?php
      
    // example to understand that an abstract 
    // class can not contain an method with
    // body in php
    abstract class Base {
        abstract function printdata() {
            echo "Parent class printdata";
        }
    }
    ?>

    Errores de tiempo de ejecución:

    PHP Fatal error:  Abstract function Base::printdata() cannot contain body 
    in /home/a7540402ade5337d505a779cf4797b38.php on line 7
    

Publicación traducida automáticamente

Artículo escrito por ankit15697 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 *