Entenda a diferença entre interfaces e classes abstratas em PHP

Veja a diferença entre interfaces e classes abstratas em PHP e como utilizá-las para estruturar melhor seu código orientado a objetos.

Qual a diferença entre interfaces e classes abstratas em PHP?

Em PHP, tanto interfaces quanto classes abstratas permitem criar um modelo de código reutilizável, mas existem diferenças fundamentais entre elas.

O que é uma Interface?

Uma interface define um conjunto de métodos que uma classe deve implementar, mas não pode conter implementação.

<?php
interface Animal {
    public function fazerSom();
}

class Cachorro implements Animal {
    public function fazerSom() {
        return "O cachorro late!";
    }
}
?>

Neste exemplo, qualquer classe que implemente a interface Animal precisa definir o método fazerSom().

O que é uma Classe Abstrata?

Uma classe abstrata pode conter métodos com ou sem implementação e propriedades.

<?php
abstract class Veiculo {
    protected $marca;

    public function setMarca($marca) {
        $this->marca = $marca;
    }

    abstract public function mover();
}

class Carro extends Veiculo {
    public function mover() {
        return "O carro está em movimento!";
    }
}
?>

Aqui, mover() é um método abstrato, que deve ser implementado pelas classes filhas, enquanto setMarca() já possui uma implementação padrão.

A escolha entre interfaces e classes abstratas depende do contexto do código. Interfaces são ideais para definir contratos comuns entre classes não relacionadas, enquanto classes abstratas são mais adequadas para modelar classes que compartilham comportamento parcial.

Algumas aplicações:

  • Interfaces para garantir que diferentes classes implementem os mesmos métodos
  • Classes abstratas para criar modelos de classes com comportamentos parciais
  • Estruturação de código em frameworks PHP
  • Aplicação de padrões de projeto como Factory e Strategy

Dicas para quem está começando

  • Use interfaces quando precisar definir apenas métodos obrigatórios.
  • Utilize classes abstratas quando precisar compartilhar comportamento entre classes.
  • Uma classe pode implementar múltiplas interfaces, mas apenas herdar uma classe abstrata.
  • Interfaces não podem conter atributos, enquanto classes abstratas podem.
  • Pratique implementando interfaces e classes abstratas para entender as diferenças.

Contribuições de Daniel Moreira

Compartilhe este tutorial: Qual a diferença entre interfaces e classes abstratas em PHP?

Compartilhe este tutorial

Continue aprendendo:

O que são interfaces em PHP e como usá-las?

Veja como as interfaces em PHP permitem definir contratos para classes e garantir a implementação de métodos obrigatórios.

Tutorial anterior

Como usar traits em PHP e quando utilizá-las?

Veja como as traits em PHP permitem a reutilização de código entre classes sem a necessidade de herança múltipla.

Próximo tutorial