Exercícios Resolvidos de Herança

Ver Teoria

Enunciado

Implemente as classes abaixo:

Passo 1

E aí, beleza?!

Essa questão mostra pra gente um esquema que contém três classe: A n i m a l , C a c h o r r o e G a t o , mostrando os métodos e atributos de cada classe. E o mais interessante, é que mostra que as classes C a c h o r r o e G a t o são herdeiras da classe base A n i m a l .

A questão pede pra gente implementar as classes mães e as classes filhas.

Mas vamos começar com o cabeçalho do código. Analisando o esquema, você vai notar que temos os atributos n o m e e r a c a que são do tipo string. Então vamos precisar incluir o cabeçalho < s t r i n g >

Passo 2

Vamos começar implementando a classe mãe A n i m a l

Dando uma olhada no esqueminha fornecido na questão, a gente possui dois atributos públicos do tipo string n o m e e r a c a . Vamos implementar

Também temos métodos publicos, um construtor sobrecarregado e o método c a m i n h a ( ) . Quando o construtor não recebe parâmetros os dois atributos são iniciados com strings vazias. Quando o construtor recebe um parâmetro, o valor do atributo nome é preenchido.

Acontece que construtores sobrecarregados não funcionam muito bem com herança. Porém, podemos usar um construtor com valor padrão e terá o mesmo efeito. Lembre-se, o construtor é um método sem tipo com o mesmo nome da classe. Para fazer um construtor com parâmetro padronizado, é só usar o operador = após os parâmetros na declaração do método.

N o m e C l a s s e ( t i p o   p a r a m _ 1 = v a l o r P a d r a o 1 ,   … , t i p o   p a r a m _ N = v a l o r P a d r a o N )

No nosso código, o construtor terá apenas um único parâmetro:

Por fim, a gente tem de implementar o método c a m i n h a ( ) esse método não recebe e nem retorna nada, então deve ser do tipo v o i d com parêntesis vazios. Esse método vai imprimir uma mensagem que informa o nome do animal e que ele está caminhando

Passo 3

Agora vamos pra parte mais legal da questão. Vamos construir uma classe filha chamada C a c h o r r o que herda a classe A n i m a l . Lembre-se, a gente efetua a herança no momento da criação da classe filha assim:

c l a s s   N o m e C l a s s e F i l h a   : p u b l i c   N o m e C l a s s e M a e

No código fica:

A classe mãe possui um construtor. Então vamos criar um construtor na classe filha que utiliza o construtor da classe mãe. Fazemos da seguinte maneira:

N o m e C l a s s e F i l h a   ( t i p o s   p a r a m e t r o s )   : N o m e C l a s s e M a e (   p a r a m e t r o s   )

O ponto crucial é que a classe mãe usa um construtor com valor padronizado. Então o construtor da classe filha também deve ter um valor padronizado:

E olha que legal. Como todos os parâmetros já são iniciados dentro da classe mãe, então o construtor da classe filha pode ficar vazio.

Agora a classe C a c h o r r o foi criada e já possui os atributos e métodos que foram herdados da classe mãe, e já está com o construtor definido. Só falta adicionar o método l a t e (   ) . Esse método não recebe e nem retorna nenhum valor, apenas imprime uma “frase” emitida pelo cachorro:

Passo 4

A segunda classe filha é a classe G a t o que é essencialmente igual à classe C a c h o r r o . Então começamos efetuando a herança no momento da criação da classe G a t o

c l a s s   N o m e C l a s s e F i l h a   : p u b l i c   N o m e C l a s s e M a e

No código fica:

O construtor deve seguir o mesmo padrão do construtor da classe mãe. Então faremos um construtor para a classe G a t o usando parâmetros padronizados:

N o m e C l a s s e F i l h a   ( t i p o s   p a r a m e t r o s = v a l o r e s )   : N o m e C l a s s e M a e (   p a r a m e t r o s   )

De novo, a gente não precisa preencher o construtor, pois todos os atributos já foram preenchidos no construtor da classe mãe.

E pra terminar a classe, vamos desenvolver o método m i a ( ) que imprime um miado:

Resposta