0Pricing
PHP Academy · Aula

Classes e métodos abstratos

Defina classes base parcialmente implementadas com palavras-chave abstract.

Classes e métodos abstratos é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.

Introdução: Classes Abstratas

Uma classe abstrata não pode ser instanciada diretamente — ela é um modelo. Métodos abstratos declaram uma assinatura sem implementação; as subclasses devem fornecê-la.

Conceitos principais

Conceitos principais:

  • Declaradas com abstract class
  • Métodos abstratos não têm corpo: abstract public function x();
  • As subclasses devem implementar todos os métodos abstratos
  • Podem conter métodos abstratos e concretos

Definição de classe abstrata

Exemplo:

<?php
abstract class Animal {
    public function __construct(protected string $name) {}

    // Must be implemented by each subclass
    abstract public function sound(): string;

    // Shared concrete method
    public function introduce(): string {
        return "I am {$this->name} and I say: " . $this->sound();
    }
}

Implementação de métodos abstratos

Continuação:

<?php
class Dog extends Animal {
    public function sound(): string { return 'Woof'; }
}

class Cat extends Animal {
    public function sound(): string { return 'Meow'; }
}

$animals = [new Dog('Rex'), new Cat('Whiskers')];
foreach ($animals as $a) {
    echo $a->introduce() . PHP_EOL;
}
// I am Rex and I say: Woof
// I am Whiskers and I say: Meow

Padrão de método de modelo

Mais detalhes:

<?php
abstract class DataProcessor {
    // Template method: defines the algorithm skeleton
    final public function process(array $data): array {
        $data = $this->validate($data);
        $data = $this->transform($data);
        return $this->format($data);
    }

    abstract protected function validate(array $data): array;
    abstract protected function transform(array $data): array;

    protected function format(array $data): array { return $data; }
}

Abstrata versus interface

Uso prático:

<?php
// Use abstract class when:
// - Subclasses share implementation code
// - You need constructor logic or state

// Use interface when:
// - Defining a contract (no implementation needed)
// - Multiple inheritance of type is needed

// A class can only extend ONE abstract class
// but can implement MULTIPLE interfaces

Implementação parcial

Avançado:

<?php
abstract class Repository {
    // Concrete method available to all subclasses
    protected function findById(int $id, string $table): array {
        $stmt = $this->getDb()->prepare("SELECT * FROM $table WHERE id = ?");
        $stmt->execute([$id]);
        return $stmt->fetch(PDO::FETCH_ASSOC) ?: [];
    }

    abstract protected function getDb(): PDO;
    abstract public function find(int $id): array;
}

Padrão

Padrões comuns de classes abstratas são usados para resolver de forma organizada problemas recorrentes de design. Aplique-os de maneira consistente para obter um código legível e fácil de manter.

Quando usar

Saber quando aplicar classes abstratas é tão importante quanto saber como. O uso excessivo leva à complexidade; o uso insuficiente leva à duplicação.

Exemplo do mundo real

Em aplicações reais, as classes abstratas aparecem com frequência em estruturas, ORMs e camadas de serviço. Compreendê-las prepara você para contribuir com projetos profissionais em PHP.

Armadilhas comuns

Evite estes erros com classes abstratas:

  • Classes abstratas não podem ser instanciadas com new
  • Todos os métodos abstratos devem ser implementados em subclasses concretas
  • Use o padrão de método de modelo para definir esqueletos de algoritmos
  • Classes abstratas podem ter construtores, propriedades e métodos concretos

Verificação rápida

É possível instanciar diretamente uma classe abstrata com 'new'?

Recapitulação: Classes Abstratas

Resumo:

  • Classes abstratas não podem ser instanciadas com new
  • Todos os métodos abstratos devem ser implementados em subclasses concretas
  • Use o padrão de método de modelo para definir esqueletos de algoritmos
  • Classes abstratas podem ter construtores, propriedades e métodos concretos

Perguntas Frequentes

A aula “Classes e métodos abstratos” é grátis?

Sim — o texto completo de “Classes e métodos abstratos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.

O que vou aprender em “Classes e métodos abstratos”?

Defina classes base parcialmente implementadas com palavras-chave abstract. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar PHP Academy?

Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Classes e métodos abstratos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de PHP Academy?

Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Extensão de classes com herança
  2. Classes e métodos abstratos
  3. Implementação de interfaces
  4. Traits para reutilização de código
← Voltar para PHP Academy