Sobes.tech
Junior

¿Qué es una clase abstracta?

sobes.tech AI

Respuesta de la IA

Una clase abstracta es una clase que no puede ser instanciada directamente, es decir, no se puede crear un objeto con new. Está diseñada para ser utilizada como clase base para otras clases (subclases).

Las características principales de una clase abstracta:

  • Se declara con la palabra clave abstract.
  • Puede contener métodos tanto abstractos como normales (concretos).
  • Los métodos abstractos se declaran con la palabra clave abstract y no tienen cuerpo (implementación). Deben ser implementados en las clases no abstractas que heredan.
  • Puede contener valores constantes y propiedades.
<?php

abstract class AbstractClass
{
    // Método abstracto - debe ser implementado en la clase hija
    abstract protected function abstractMethod();

    // Método normal
    public function concreteMethod()
    {
        echo "Este es un método concreto\n";
    }
}

class ConcreteClass extends AbstractClass
{
    // Implementación del método abstracto
    protected function abstractMethod()
    {
        echo "Esta es la implementación del método abstracto\n";
    }
}

// No se puede crear una instancia de una clase abstracta
// $obj = new AbstractClass(); // Error

// Se puede crear una instancia de la clase concreta
$obj = new ConcreteClass();
$obj->abstractMethod();
$obj->concreteMethod();

Las clases abstractas se utilizan para definir una interfaz y funcionalidad comunes para un grupo de clases relacionadas, dejando los detalles de implementación a las clases hijas específicas. Desde la perspectiva del consumidor del código, se puede trabajar con objetos de las clases hijas usando el tipo de la clase base abstracta, lo que garantiza el polimorfismo.