Interfaces

Em C++, interfaces são implementadas por meio de classes abstratas puras: classes que possuem apenas métodos virtuais puros (ou seja, métodos declarados com = 0 e sem implementação). Interfaces servem para definir um contrato: toda classe que implementar a interface deve fornecer sua própria implementação para os métodos declarados.

Como criar uma interface em C++?

  1. Declare uma classe com métodos virtuais puros:
class IAnimal {
public:
virtual void falar() = 0; // Método puro: = 0
virtual ~IAnimal() = default; // Destrutor virtual
};
  • Não é possível instanciar objetos de IAnimal, pois ela é abstrata.
  1. Implemente a interface em classes derivadas:
class Gato : public IAnimal {
public:
void falar() override {
std::cout << "Miau!" << std::endl;
}
};

class Cachorro : public IAnimal {
public:
void falar() override {
std::cout << "Au au!" << std::endl;
}
};
  • As classes derivadas devem implementar todos os métodos virtuais puros da interface.
  1. Utilize polimorfismo via ponteiros ou referências:
int main() {
IAnimal* animal1 = new Gato();
IAnimal* animal2 = new Cachorro();

animal1->falar(); // Saída: Miau!
animal2->falar(); // Saída: Au au!

delete animal1;
delete animal2;
return 0;
}
  • Isso permite tratar diferentes tipos de objetos de forma uniforme, usando a interface como tipo de referência.

Observações Importantes

  • Em C++, não existe uma palavra-chave específica para “interface” como em Java ou C#. O padrão é usar classes abstratas puras para esse papel.
  • Uma interface pode ter apenas métodos virtuais puros e, opcionalmente, um destrutor virtual.
  • Uma classe pode implementar várias interfaces (herança múltipla).

Resumindo

  • Interface em C++ = classe abstrata pura (apenas métodos virtuais puros).
  • Obrigam as classes derivadas a implementar os métodos declarados.
  • Permitem polimorfismo e facilitam a extensibilidade do código.