English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste artigo, você aprenderá sobre C ++toda a informação sobre herança. Mais especificamente, o que é herança e diferentes métodos de implementação de herança por exemplo.
herança em C ++um dos principais recursos da programação orientada a objetos. Ele permite que o usuário crie um novoClasse(Classe derivada).
As classes derivadas herdaram todas as funcionalidades da classe base e podem ter suas próprias outras funcionalidades.
Suponha que você precise de três papéis no jogo-umprofessor de matemática(Professor de matemática),umjogador de futebol (Footballer)e umComerciante(Businessman).
Como todos os papéis são humanos, eles podem andar e falar. Mas, eles também têm habilidades especiais. O professor de matemática podeensinar matemática, os jogadores de futebol podemjogar futebol, os comerciantes podemGerenciar empresas.
Você pode criar três classes separadas que podem andar, falar e executar suas habilidades especiais, conforme mostrado na figura a seguir.
Em cada classe, você replicará o mesmo código de andar (Walk) e falar (Talk) para cada papel.
Se quiser adicionar novas funcionalidades-comer (comer), precisaremos implementar o mesmo código para cada personagem. Isso pode facilmente levar a erros (ao copiar) e código repetido.
Se tivermos umPersonClasse, que possui funcionalidades básicas, como falar, andar, comer, dormir e adicionar habilidades especiais para cada papel, isso torna mais fácilMuito. Isso é feito através da herança.
Ao usar herança, você não precisa implementar o mesmo código para cada classe. BastaHerançaElas são suficientes.
Portanto, para os professores de matemática (classe derivada), você pode herdar todas as funcionalidades da classe base Person e adicionar novas funcionalidades.TeachMaths(ensinar matemática). Da mesma forma, para o futebolista, você herda todas as funções da classe Person e adiciona novas funçõesPlayFootball(jogar futebol)etc.
Isso torna seu código mais conciso, fácil de entender e expandível.
É importante lembrar que:ao usar herança, cada classe derivada deve atender aos requisitos, independentemente de ser uma classe base. No exemplo acima, o professor de matemática éuma pessoa, o futebolista éuma pessoa. Você não pode ter:O comerciante é a empresa.
class Person { ... .. ... }; class MathsTeacher : public Person { ... .. ... }; class Footballer : public Person { .... .. ... };
No exemplo acima, a classe Person é a classe base, enquanto as classes MathsTeacher e Footballer são derivadas de Person.
As classes derivadas são apresentadas juntamente com a declaração da classe, seguidas de dois pontos, a palavra-chave public e o nome da classe base que herda.
Como MathsTeacher e Footballer são derivadas de Person, podem acessar todos os dados e funções de membro da classe Person.
Criando personagens de jogo usando o conceito de herança.
#include <iostream> using namespace std; class Person { public: string profession; int age; Person(): profession("desempregado"), age(16) { } void display() { cout << "Minha profissão é: " << profession << endl; cout << "Minha idade é: " << age << endl; walk(); talk(); } void walk() { cout << "Eu vou andar." << endl; } void talk() { cout << "Eu vou falar." << endl; } }; // A classe MathsTeacher herdada da classe base Person. class MathsTeacher : public Person { public: void teachMaths() { cout << "Eu vou ensinar matemática." << endl; } }; // A classe Footballer herdada da classe base Person. class Footballer : public Person { public: void playFootball() { cout << "Eu vou jogar futebol." << endl; } }; int main() { MathsTeacher teacher; teacher.profession = "professor"; teacher.age = 23; teacher.display(); teacher.teachMaths(); Footballer footballer; footballer.profession = "atleta"; footballer.age = 19; footballer.display(); footballer.playFootball(); return 0; }
Resultados de saída
Minha profissão é: professor Minha idade é: 23 Eu vou andar. Eu vou falar Eu vou ensinar matemática. Minha profissão é: atleta Minha idade é: 19 Eu vou andar. Eu vou falar Eu vou jogar futebol.
Neste programa, Person é a classe base, enquanto MathsTeacher e Footballer são derivadas da classe base Person.
A classe Person tem dois membros de dados- profession e age. Ele também tem dois membros funções- walk() e talk().
Tanto MathsTeacher quanto Footballer podem acessar todos os membros de dados e funções da classe Person.
No entanto, MathsTeacher e Footballer também têm seus próprios membros funções: teachMaths() e playFootball(). Essas funções podem ser acessadas apenas pelas próprias classes.
No função main(), foi criado um novo objeto MathsTeacher teacher.
Isso pode acessar os membros de dados Person, portanto, pode configurar a profissão (profissão) e a idade (idade) de teacher. Usar a função display() definida na classe Person para exibir esses dados. Da mesma forma, a classe MathsTeacher define a função teachMaths().
Da mesma forma, também será criado um novo objeto Footballer footballer. Ele também pode acessar os membros de dados Person e pode chamar a função display() para exibir. Em seguida, apenas o jogador de futebol (footballer) pode acessar a função playFootball().
Ao criar classes derivadas a partir da classe base, pode-se usar diferentes especificadores de acesso para herdar os membros de dados da classe base.
Estes podem ser public, protected ou private.
No exemplo acima, a classe base Person foi herdada publicamente por MathsTeacher e football.
Saiba Mais SobreC ++de Herança Pública, Protegida e PrivadaMais Informações.
Supondo que os membros das funções da classe base e derivada tenham o mesmo nome e parâmetros.
Se criar um objeto da classe derivada e tentar acessar o membro da função, só pode chamar a função do membro da classe derivada.
Os membros da classe derivada sobrescrevem os membros da classe base.
Saiba Mais SobreC ++de Sobrescrita de FunçãoMais Informações.