Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Introdução à herança
Apresentação
Quando falamos em herança, logo nos vêm à mente situações intrínsecas no meio em que vivemos 
— por exemplo, uma pessoa que deixa seus bens como herança para seus dependentes. Podemos 
citar também heranças genéticas: um filho herda a cor de pele, a cor de cabelo e a cor de olhos, 
entre outras características, de seus pais biológicos.
Em orientação a objetos não é diferente, a não ser o fato de estarmos lidando com códigos. 
Herança, em orientação a objetos, consiste na criação de uma estrutura que contém uma classe raiz 
— que também podemos referir como classe pai, mãe, genérica ou superclasse — e classes 
especializadas, também chamadas de classes filhas ou subclasses.
Nesta Unidade de Aprendizagem, você vai ver o que é herança e como se pode implementar essa 
estrutura.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Definir o que é herança em orientação a objetos.•
Julgar quanto à necessidade da criação de uma estrutura de herança.•
Construir estruturas de herança em uma linguagem de programação.•
Desafio
Trabalhar com herança em orientação a objetos pode trazer muitas vantagens, como a economia de 
código; entretanto, é importante ter um bom conhecimento sobre o assunto para aplicá-lo da 
melhor forma nos projetos.
Imagine o seguinte cenário:
A imagem a seguir possui audiodescrição.
 
Sua tarefa é implementar as classes de modelo em uma linguagem de programação orientada a 
objetos. Além dos requisitos para cadastro de informações e seus respectivos campos, seu gerente 
apontou as seguintes recomendações:
• programar utilizando a linguagem de programação Java.
• considerar a possibilidade de criar uma estrutura de herança.
• encaminhar o projeto em formato .zip para validação.
Infográfico
A herança é um mecanismo que entende as classes existentes adicionando novos métodos e 
campos no código-fonte. Tanto classes raízes como classes genéricas são implementadas e são 
denominadas "classes pai". As classes filhas são as classes mais especializadas. Essa classe herda 
métodos e atributos de uma superclasse.
Veja, no Infográfico, conceitos importantes sobre o uso de herança.
A imagem a seguir possui audiodescrição.
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/d5fcd28d-ea27-4954-a2b3-69ce3712c751/daea261f-8ea7-4f78-b544-01e952d936c8.png
Conteúdo do Livro
Trabalhar com herança em orientação a objetos pode nos trazer redução significativa de código e, 
em consequência, aumento de produtividade. Portanto, o domínio desses conceitos torna-se vital 
para o desenvolvimento de softwares.
No capítulo Introdução à herança, base teórica desta Unidade de Aprendizagem, você irá aprender 
a identificar a necessidade da criação de uma estrutura de herança e o processo de construção de 
uma estrutura de herança em uma linguagem de programação orientada a objetos.
Boa leitura.
Os elementos gráficos deste capítulo possuem audiodescrição. Para acessar o recurso, 
clique aqui 
https://creator-files.plataforma.grupoa.education/undefined/9111_Audiodescricao_Conteudo_do_livro-2026-04-06T13:28:12-03:00.pdf
LINGUAGEM DE 
PROGRAMAÇÃO
Priscila de Fátima Gonçalves
Introdução à 
herança em C++
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Definir o que é herança em orientação a objetos.
 � Identificar a necessidade da criação de uma estrutura de herança.
 � Construir estruturas de herança em uma linguagem de programação.
Introdução
Ao estudar herança, você percebe seus conceitos, aprende a realizar 
reutilização de código (poupando tempo de desenvolvimento), como 
utilizar construtores e funções-membro da classe base, bem como a 
diferença entre vinculação estática e dinâmica.
Neste capítulo, você estudará um importante conceito de progra-
mação orientada a objetos. Por meio da utilização da herança você será 
capaz de definir classes novas que serão extensões de classes existentes.
Conceito 
A herança é um dos principais pontos da programação orientada a objetos, 
promovendo a extensibilidade do código, a reutilização e uma maior coerência 
lógica no modelo de implementação. Os métodos herdados são usados da 
mesma forma que os métodos não herdados, nenhum trecho de código é ne-
cessário para mencionar que os métodos serão herdados, o uso do recurso em 
uma classe não requer saber se ele foi ou não herdado, o que gera flexibilidade 
para o programador.
Entre as vantagens oferecidas pela herança, podemos citar a manutenção 
de bibliotecas, para uso futuro de determinados recursos que sejam utilizados 
com frequência. 
Segundo Horstmann (2005), a herança é um mecanismo para melhorar classes 
existentes, ou seja, se uma classe nova precisa ser implementada e há uma classe 
com um conceito geral já disponível, a nova classe poderá herdar da classe existente.
Em C++, uma classe ou estrutura pode ter mais de uma classe base direta 
ou estrutura, permitindo especificar se você deseja que uma classe seja uma 
classe base simples ou uma classe base virtual. Veja exemplos nas Figuras 1 e 2.
Figura 1. Definição de classe derivada que apresenta o relacionamento entre as classes.
Fonte: Horstmann (2005, p. 386).
Figura 2. Diagrama de herança que apresenta o relacionamento entre as classes.
Fonte: Horstmann (2005, p. 387).
Introdução à herança em C++160
Necessidade da criação de uma estrutura 
de herança
Os dados-membro de uma classe base estão presentes em cada objeto de uma 
classe derivada. Porém, não podem ser acessados pelas funções-membro 
dessa classe. Como se tratam de dados privativos da classe base, somente ela 
tem acesso a eles. Isto mostra que a classe derivada não tem mais direitos de 
acesso do que qualquer outra classe.
Quando uma classe é instanciada, o construtor é chamado. Dessa forma, se 
ela for derivada de outra, o construtor da classe base é chamado antes. Ainda 
dentro desse contexto, se a classe base for derivada de outra, o processo se 
repetirá de forma recursiva, até que uma classe não derivada seja atingida, 
o que se torna essencial para manter a compatibilidade para o objeto criado.
Quando uma classe base não possuir um construtor sem parâmetros, a 
classe derivada tem que declarar um construtor, mesmo que ele esteja vazio. 
O construtor de uma classe derivada tem duas funções: a primeira refere-se 
a inicializar o objeto base; e a segunda, a inicializar todos os dados-membro. 
Observe o modelo da Figura 3.
Figura 3. Construtor com inicializador de classe base.
Fonte: Horstmann (2005, p. 392).
161Introdução à herança em C++
Caso seja omitido o construtor de uma classe base, o objeto base será 
construído com o construtor default dela. Porém, se a classe base não possuir 
um construtor default, você terá que chamar, de forma explícita, um construtor 
da classe base no construtor da classe derivada. Se você invocar outra função-
-membro sobre o parâmetro implícito, não precisará especificar o parâmetro,
mas somente escrever o nome da função-membro.
Segundo Horstmann (2005), um dos erros mais frequentes é tentar acessar 
campos privativos da classe base. Outro possível erro é que, ao estender a 
funcionalidade de uma função da classe base, os programadores se esquecem 
do nome da classe. Assim, sempre que se chama uma função de determinada 
classe base a partir de uma função do mesmo nome de uma classe derivada, 
tenha a certeza de fornecer o nome completo da função, incluindo o nome 
da classe base.
Ainda dentro da implementação de herança, você precisa saber que existem 
tipos de vinculação de objetos, dinâmica e estática. O tipo estático é o tipo 
foi declarado no texto do programa como tipo ponteiro, sem fazer qualquer 
diferença para onde está apontando; já o tipo dinâmico é determinado pelo 
tipo de objeto ao qual se refere neste momento, sendo assim, indica como ele 
se comportará.O tipo dinâmico pode ser modificado à medida que o programa 
for sendo executado, normalmente por meio de atribuições.
As funções virtuais são dinamicamente vinculadas, portanto, a função espe-
cífica chamada será determinada pelo tipo dinâmico de objeto, de acordo com 
o modo como é chamada. Porém, os parâmetros são vinculados estaticamente, 
ou seja, você pode chamar uma função definida em uma classe derivada, mas 
deve utilizar um valor padrão de parâmetro da classe base.
Nunca redefina um valor padrão de parâmetros herdados, porque os valores 
padrão herdados são estaticamente vinculados, enquanto as funções virtu-
ais – as únicas funções que você deve sobrescrever – são dinamicamente 
vinculadas (MEYERS, 2011, p. 203).
“Uma classe derivada herda todos os campos de uma classe base. Porém, se os campos 
forem privativos, as funções da classe derivada não possuem direito de acesso a eles” 
(HORSTMANN, 2005, p. 396).
Introdução à herança em C++162
Construção de estruturas de herança em 
uma linguagem de programação
Quando uma classe herda da outra, membros da classe base são incorporados 
como membros da classe derivada. Como as restrições de acessos são geren-
ciadas em classes diferentes, principalmente o acesso aos membros da classe 
base a partir das derivadas, você deve aplicar os especificadores de acesso 
para obter o controle de acesso à classe base, são eles:
 � public;
 � private;
 � protected.
Herança pública garante que tudo o que se aplica a objetos da classe base, 
será aplicado aos objetos da classe derivada, porque cada objeto da classe 
derivada é um objeto da classe base. Na classe herdada como public, membros 
da classe derivada permanecem como públicos; membros private da classe base 
só podem ser acessados por meio de funções públicas ou protegidas da classe 
base; e membros protected que estiverem na classe derivada se comportam 
na classe derivada como protegidos. 
A utilização do atributo protected funciona da mesma forma que o private 
sob o ponto de vista interno da classe, a diferença está no fato de que atributos 
protected são visíveis pelas classes derivadas, ao passo que os private não. 
Essas características podem ser traduzidas por permitir flexibilidade para o 
programador.
Na classe herdada como protected, membros public da classe base ficam 
como se estivessem protegidos na classe derivada; membros private só podem 
ser acessados por funções da classe base que se utilizem das informações que 
estão neles; e membros protected se comportam como se fossem copiados 
como protegidos na classe derivada.
Na classe herdada como private, membros public agem como se fossem 
private na classe derivada, membros private estarão presentes, porém ocultos 
como private, só podendo ser acessados por funções da classe base que se utili-
zem das informações que neles contém; já os membros protected comportam-se 
como private na classe derivada. Assim, sobressai o atributo mais restritivo.
163Introdução à herança em C++
Em C++ pode ocorrer de uma classe derivada herdar membros de várias 
classes base, o que poderá dar ao programador, maior poder de modelagem, 
porém necessitará de mais cuidado na sua utilização, em razão do que chama-
mos de heranças múltiplas. Observe no Quadro 1 uma relação entre heranças 
e seus acessos permitidos.
Fonte: Adaptado de Aguilar (2008, p. 623).
Tipo de herança
Acesso a membro 
classe base
Acesso a membro 
classe derivada
Privado Privado
Protegido
Público
Inacessível
Privado
Privado
Protegido Privado
Protegido
Público
Inacessível
Protegido
Protegido
Público Público
Protegido
Público
Público
Protegido
Público
(Omitido) Público
Protegido
Público
Público
Protegido
Público
Quadro 1. Tipos de herança considerados no pseudocódigo e acessos permitidos
Introdução à herança em C++164
Observe a demonstração de herança a seguir.
165Introdução à herança em C++
Introdução à herança em C++166
167Introdução à herança em C++
AGUILAR, L. J. Fundamentos de programação: algoritmos, estruturas de dados e objetos. 
Porto Alegre: McGraw-Hill, 2008.
HORSTMANN, C. Conceitos de computação com o essencial de C++. 3. ed. Porto Alegre: 
Bookman, 2005.
MEYERS, S. C ++ eficaz: 55 maneiras de aprimorar seus programas e projetos. 3. ed. 
Porto Alegre: Bookman, 2011.
Leituras recomendadas
VOTRE, V. P. C++ explicado e aplicado. Rio de Janeiro: Alta Books, 2016.
WIKILIVROS. Programar em C++: herança. 2011. Disponível em: . Acesso em: 23 abr. 2018.
Dica do Professor
A herança é um princípio de programação orientada a objetos que permite que novas classes sejam 
criadas a partir de classes criadas anteriormente. Essas novas classes são chamadas de "subclasses" 
ou "classes derivadas". As classes existentes que produzem subclasses são chamadas de 
"superclasses" ou "classes base".
Na Dica do Professor, você vai ver como os atributos semelhantes fazem parte das classes listadas 
entre as classes aluno e professor e compreender como os atributos podem ser analisados, 
facilitando a criação de uma estrutura de herança.
As imagens do vídeo a seguir possuem audiodescrição. Para acessar o recurso, 
clique aqui 
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://creator-files.plataforma.grupoa.education/undefined/9111_Audiodescricao_Dica_do_Professor-2026-04-06T14:36:41-03:00.pdf
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/c209e2d8c5a319d0ad8315cc0c81e94b
Exercícios
1) Na orientação a objetos existe um importante conceito, que é a herança.
Marque a alternativa que melhor define herança em orientação a objetos.
A) Herança é o comportamento dos objetos.
B) Herança ocorre quando o valor de um atributo pode ser compartilhado entre vários objetos.
C) A palavra-chave "herança" permite utilizar uma classe que está em outro pacote.
D) Existe herança quando duas ou mais classes dependem uma da outra.
E) A herança é um mecanismo para aprimorar as classes existentes.
2) A redução de um código permite maior facilidade para que o desenvolvedor possa revisar 
seu código, realizar a manutenção dos recursos e ter melhor visibilidade sobre a 
implementação de uma aplicação.
Quando é identificada a possibilidade de usar herança em um projeto?
A) Quando existe a necessidade de reduzir código. 
B) Quando existe relação entre classes.
C) Quando se deseja aumentar a produtividade no desenvolvimento.
D) Quando há relação em atributos em comum entre duas ou mais classes. 
E) Quando classes contêm muitos atributos.
3) Em uma estrutura de programação orientada a objetos, o desenvolvedor deve estar atendo 
ao comportamento generalizado dos objetos, assim como ao processo de especialização das 
operações ou atributos.
Em relação à herança, o que é possível afirmar?
A) Classes especializadas são aquelas específicas de determinado domínio.
B) Em uma estrutura de herança, todas as classes necessitam conter o método main().
C) A herança acontece quando, no desenvolvimento, existe a possibilidade de reúso de 
componentes.
D) Em herança existem classes genéricas e especializadas.
E) Métodos não podem ser herdados por subclasses.
4) As classes em Java podem ser classificadas em diferentes tipos. Em geral, para declarar as 
classes, é necessário criar um nome e certificar-se de que a classe tem um corpo, 
especificado dentro de um par de chaves { }. Métodos, atributos e palavras-chaves também 
devem ser declarados corretamente.
Analise o seguinte código de uma classe em Java: 
 
public class Agua extends Bebida { 
private String ph; 
public String getPh(){ return ph; 
} 
public void setPh(String ph){ 
this.ph=ph; 
} 
}
A) O código é inválido, pois não tem um método main().
B) Não é necessária a criação de métodos de acesso como get e set, pois a classe contém apenas 
um atributo.
C) A palavra-chave "extends" informa que a classe "Agua" é uma extensão da classe "Bebida".
D) A classe"Agua", quando instanciada, terá acesso apenas ao atributo ph, por meio dos 
métodos set e get.
E) A classe não poderá ser instanciada, pois é necessário que os métodos de acesso da 
superclasse estejam implementados na subclasse.
As classes públicas podem ser acessadas por qualquer outra classe, enquanto as classes 
privadas podem ser acessadas apenas por métodos da mesma classe. As palavras-chave 
utilizadas são, respectivamente, private e public na linguagem de programação Java.
5) 
Analise o código a seguir: 
 
public class Animal { 
private int idAnimal; 
private String nome; 
private int idade; 
 
public String getNome(){ 
return nome; 
} 
public void setNome(String nome){ 
this.nome = nome; 
} 
public int getIdade(){ 
return idade; 
} 
public void setIdade(int idade){ 
this.idade = idade; 
} 
}
=================== // ============================ 
 
public class Mamifero extends Animal{ 
 
private String gestacao; 
private String especVida; 
 
public String getGestacao(){ 
return gestacao; 
} 
public void setGestacao(String gestacao){ 
this.gestacao = gestacao;} 
public String getEspecVida(){ 
return especVida; 
} 
public void setEspecVida(String especVida){ 
this.especVida = especVida; 
} 
}
=============================//========================== 
 
public class Cachorro Mamifero{ 
private String raca; 
public String getRaca(){ 
return raca; 
} 
public void setRaca(String raca){ 
this.raca = raca; 
} 
}
============================//============================ 
 
public class Homem extends Mamifero{ 
private String etnia; public String getEtnia(){ 
return etnia; 
} 
public void setEtnia(String etnia){ 
this.etnia = etnia; 
} 
}
A) A classe "Animal" é subclasse de "Mamifero".
B) A classe "Cachorro" está estendendo de "Mamifero".
C) A sintaxe da classe "Homem" está incorreta.
D) Por se tratar de herança, a classe "Homem" poderá herdar apenas membros da classe 
"Mamifero".
E) A classe "Homem" é subclasse; a classe "Mamifero" é subclasse e superclasse; e a classe 
"Animal" é superclasse.
Na prática
Além de conhecer os conceitos acerca da herança, é necessário compreender sua sintaxe, que, por 
mais que seja simples, exige planejamento sobre o objetivo e a forma como será implementada. A 
sintaxe usada para declarar que uma classe estende de outra também utiliza palavras reservadas 
atribuídas às estruturas de código.
Neste Na Prática, assista ao vídeo e veja como implementar uma estrutura de herança na 
linguagem de programação Java.
As imagens do vídeo a seguir possuem audiodescrição. Para acessar o recurso, 
clique aqui 
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://creator-files.plataforma.grupoa.education/undefined/9111_Audiodescricao_Na_Pratica-2026-04-06T14:22:47-03:00.pdf
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/fd338fcef44dc6e854ab525f89aa77a9
Saiba mais
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
Herança em Java (extends) – Conceito e exemplo
Neste vídeo, você vai ver a aplicação e para que serve uma herança em Java, compreendendo sua 
vantagem para o reaproveitamento de código na organização das classes.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Herança em Java: teoria e prática
Leia o seguinte artigo, em que são apresentados os conceitos de herança e sua aplicação. São 
abordados exemplos sobre a aplicação de herança simples, seus principais benefícios e o uso de 
construtores.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
OCA Java SE 8 – Guia de estudos para o exame 1Z0-808
Acompanhe, no Capítulo 7, Herança de classes, como implementar e usar herança e os tipos de 
classes, seus aspectos básicos, métodos e outras ações que consistem em um dos três princípios 
principais de programação.
Conteúdo interativo disponível na plataforma de ensino!
https://www.youtube.com/embed/1G-WpOA2k04
https://medium.com/caiquefortunato/heran%C3%A7a-em-java-teoria-e-pr%C3%A1tica-2ca7d9b0f3de

Mais conteúdos dessa disciplina