Vídeo: Curso de C++ - Aula 32 - Construtor de cópias 2024
I herança em C ++ a capacidade de uma classe para herdar recursos ou propriedades de outra classe. A herança é um conceito comum. Você herda certas propriedades da classe Humana, , como minha capacidade de conversar (mais ou menos) de forma inteligente e minha dependência de alimentação por ar, água e carboidratos (um pouco dependente demais da última).
Essas propriedades não são exclusivas para humanos. A classe Human herda as dependências de ar, água e nutrição da classe Mamífero que a herdou da classe Animal.
A capacidade de passar para baixo propriedades é poderosa. Ele permite que você descreva as coisas de forma econômica. Por exemplo, se alguém pergunta: "O que é um pato? "Você pode dizer:" É um pássaro que vai curtinho. "
Apesar do que você pensa, essa resposta transmite uma quantidade considerável de informações. Ele sabe o que é um pássaro, e agora ele sabe todas essas mesmas coisas sobre um pato mais a propriedade adicional do pato de "quackness". "
As linguagens orientadas a objetos (OO) expressam esse relacionamento de herança, permitindo que uma classe herdar de outra. As linguagens OO podem gerar um modelo mais próximo do mundo real (lembre-se das coisas do mundo real) do que o modelo gerado por idiomas que não suportam a herança.
C ++ permite que uma classe herda outra classe da seguinte maneira:
classe Estudante {}; classe GraduateStudent: public Student {};
Aqui, um GraduateStudent herda todos os membros de Estudante. Assim, um GraduateStudent IS_A Aluno . (A capitalização do IS_A enfatiza a importância desta relação.) Claro, GraduateStudent também pode conter outros membros que são exclusivos de GraduateStudent .
A herança foi introduzida em C ++ por vários motivos. Claro, o principal motivo é a capacidade de expressar o relacionamento de herança. Um motivo menor é reduzir a quantidade de digitação.
Suponha que você tenha uma classe Estudante, e você é convidado a adicionar uma nova classe chamada GraduateStudent. A herança pode reduzir drasticamente o número de coisas que você deve colocar na classe. Tudo o que você realmente precisa na classe GraduateStudent são coisas que descrevem as diferenças entre alunos e estudantes de pós-graduação.
Outro efeito colateral tem a ver com a modificação do software. Suponha que você herde de alguma classe existente. Mais tarde, você acha que a classe base não faz exatamente o que a subclasse precisa.Ou talvez a classe tenha um bug.
A modificação da classe base pode quebrar outro código que use essa classe base. Criar e usar uma nova subclasse que sobrecarrega o recurso incorreto com uma versão corrigida resolve seu problema sem causar mais problemas a alguém.