0Pricing
PHP Academy · Aula

Extensão de classes com herança

Use extends para criar hierarquias de classes e substituir métodos.

Extensão de classes com herança é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 1 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: Herança no PHP

Herança permite que uma classe (filha) reutilize e amplie o código de outra classe (pai) usando a palavra-chave extends. O PHP oferece herança simples.

Conceitos principais

Conceitos principais:

  • Child herda todos os membros públicos e protegidos
  • Substitua métodos da classe pai para alterar o comportamento
  • Chame o método da classe pai com parent::
  • Use final para impedir substituições

Uso básico de extends

Exemplo:

<?php
class Shape {
    public function __construct(protected string $color) {}
    public function describe(): string { return "A {$this->color} shape"; }
}

class Circle extends Shape {
    public function __construct(string $color, private float $radius) {
        parent::__construct($color);
    }
    public function area(): float { return M_PI * $this->radius ** 2; }
}

$c = new Circle('red', 5);
echo $c->describe();   // A red shape
echo round($c->area()); // 79

Sobrescrita de métodos

Continuação:

<?php
class Logger {
    public function log(string $msg): void {
        echo "[LOG] $msg" . PHP_EOL;
    }
}

class DatabaseLogger extends Logger {
    public function log(string $msg): void {
        // Extend parent behavior
        parent::log($msg);
        // Also save to DB
        echo "[DB] Saved: $msg" . PHP_EOL;
    }
}

$l = new DatabaseLogger();
$l->log('User login');

Palavra-chave final

Mais detalhes:

<?php
class PaymentProcessor {
    final public function processPayment(float $amount): void {
        // Critical logic — cannot be overridden
        $this->validate($amount);
        $this->charge($amount);
        $this->log($amount);
    }

    protected function validate(float $amount): void { /* ... */ }
    protected function charge(float $amount): void   { /* ... */ }
    protected function log(float $amount): void      { /* ... */ }
}

Verificação com instanceof

Uso prático:

<?php
class Vehicle {}
class Car extends Vehicle {}
class ElectricCar extends Car {}

$ev = new ElectricCar();

var_dump($ev instanceof ElectricCar); // true
var_dump($ev instanceof Car);         // true
var_dump($ev instanceof Vehicle);     // true

// Also works with interfaces
var_dump($ev instanceof Countable);   // false

Classe Base abstrata

Avançado:

<?php
abstract class Notification {
    abstract public function send(string $message): bool;

    public function sendBatch(array $messages): void {
        foreach ($messages as $msg) {
            $this->send($msg);
        }
    }
}

class EmailNotification extends Notification {
    public function send(string $message): bool {
        echo "Email: $message" . PHP_EOL;
        return true;
    }
}

Padrão

Padrões comuns de herança do PHP 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 a herança do PHP é 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, a herança do PHP aparece com frequência em estruturas, ORMs e camadas de serviço. Compreendê-la prepara você para contribuir com projetos profissionais em PHP.

Armadilhas comuns

Evite estes erros com a herança do PHP:

  • Sempre chame parent::__construct() para inicializar o estado da classe pai
  • Não substitua métodos apenas para chamar a classe pai sem fazer alterações
  • Use final em métodos críticos para a segurança
  • Prefira a composição a hierarquias profundas de herança

Verificação rápida

Qual palavra-chave impede que um método seja substituído em uma subclasse?

Recapitulação: Herança no PHP

Resumo:

  • Sempre chame parent::__construct() para inicializar o estado da classe pai
  • Não substitua métodos apenas para chamar a classe pai sem fazer alterações
  • Use final em métodos críticos para a segurança
  • Prefira a composição a hierarquias profundas de herança

Perguntas Frequentes

A aula “Extensão de classes com herança” é grátis?

Sim — o texto completo de “Extensão de classes com herança” é 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 “Extensão de classes com herança”?

Use extends para criar hierarquias de classes e substituir métodos. 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 1 de 4.

Quanto tempo leva a aula “Extensão de classes com herança”?

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