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++?
- 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.
- 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.
- 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.
