Sobes.tech
Junior

O que é uma classe abstrata?

sobes.tech IA

Resposta da IA

Uma classe abstrata é uma classe que não pode ser instanciada diretamente, ou seja, não é possível criar um objeto com new. Ela é destinada a ser usada como classe base para outras classes (subclasses).

As principais características de uma classe abstrata:

  • É declarada com a palavra-chave abstract.
  • Pode conter métodos tanto abstratos quanto normais (concretos).
  • Os métodos abstratos são declarados com a palavra-chave abstract e não possuem corpo (implementação). Devem ser implementados nas classes não abstratas que as estendem.
  • Pode conter valores constantes e propriedades.
<?php

abstract class AbstractClass
{
    // Método abstrato - deve ser implementado na classe filha
    abstract protected function abstractMethod();

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

class ConcreteClass extends AbstractClass
{
    // Implementação do método abstrato
    protected function abstractMethod()
    {
        echo "Esta é a implementação do método abstrato\n";
    }
}

// Não é possível criar uma instância de uma classe abstrata
// $obj = new AbstractClass(); // Erro

// Pode-se criar uma instância da classe concreta
$obj = new ConcreteClass();
$obj->abstractMethod();
$obj->concreteMethod();

Classes abstratas são usadas para definir uma interface e funcionalidades comuns para um grupo de classes relacionadas, deixando os detalhes de implementação para as classes filhas específicas. Do ponto de vista do consumidor do código, é possível trabalhar com objetos das classes filhas usando o tipo da classe base abstrata, garantindo o polimorfismo.