Imagem de fundo

Considere a execução do código C++ a seguir: #include...

Considere a execução do código C++ a seguir:



#include <iostream>

class Animal {

public:

virtual void falar() = 0;

virtual ~Animal() = default;

};

class Gato final : public Animal {

public:

void falar(){

std::cout << "Miau\n";

}

};

class Cao final : public Animal {

public:

void falar(){

std::cout << "Auau\n";

}

};

int main(){

Animal *a;

a = new Gato;

a->falar();

delete a;

a = new Cao;

a->falar();

delete a;

}


Na programação orientada a objetos, a capacidade de a classe Animal se comportar de forma diferente em cada uma das invocações do método falar(), é chamada de:


A

Encapsulamento.


B

Sobrecarga.


C

Abstração.


D

Polimorfismo.


E

Herança.