Estou me sentindo muito burro quando cheguei nesses exercícios do curso 3. Minha lógica está horrível e não to conseguindo acompanhar, agora dificultou bastante. Eu leio e releio diversas vezes a resolução do exercício e não dá pra entender. )))):
Estou me sentindo muito burro quando cheguei nesses exercícios do curso 3. Minha lógica está horrível e não to conseguindo acompanhar, agora dificultou bastante. Eu leio e releio diversas vezes a resolução do exercício e não dá pra entender. )))):
Oi, Lucas! Tudo bem?
Não se sinta mal por estar com dificuldades, isso é completamente normal quando estamos aprendendo algo novo, especialmente conceitos mais avançados como herança e polimorfismo em orientação a objetos, no meu primeiro contato com esses conceitos também senti bastante! Vou tentar te ajudar com um exemplo prático para esclarecer melhor esses conceitos.
Vamos pegar um dos exercícios como exemplo, o exercício 2, que envolve a criação de classes Animal
, Cachorro
e Gato
:
1 . Crie a classe Animal
:
emitirSom()
. Aqui é como se fizéssemos um molde para todos os animais que vamos declarar (instanciar) no futuro, em que o método que declaramos, emitirSom()
, nos informa uma ação comum aos animais, ou seja, os animais deverão emitir um som.public class Animal {
public void emitirSom() {
System.out.println("Animal faz um som");
}
}
2 . Crie a subclasse Cachorro
:
Animal
e sobrescreve o método emitirSom()
, além disso, adiciona um método específico abanarRabo()
.public class Cachorro extends Animal {
@Override
public void emitirSom() {
System.out.println("Cachorro late");
}
public void abanarRabo() {
System.out.println("Cachorro está abanando o rabo");
}
}
Ou seja, a nossa classe chamada Animal funciona como um molde geral para todos os animais, e tem um método chamado emitirSom()
.
Quando criamos a classe Cachorro estamos criando uma classe específica para esse tipo de animal. Essa nova classe é como um molde específico baseado no molde geral de Animal. A classe Cachorro vai pegar tudo o que a classe Animal tem e usar, mas também vai mudar o método emitirSom()
para fazer um som específico de cachorro, como um latido. Esse processo de mudança de um método é chamado de sobrescrever.
Além disso, a classe Cachorro pode ter coisas que são só de cachorros, como o método abanarRabo()
, que descreve uma ação específica de cachorros abanarem o rabo. Então, enquanto todos os animais podem emitir um som, apenas os cachorros têm o método especial para abanar o rabo.
Essa é uma maneira de organizar as coisas, dizendo que todos os cachorros são animais, mas também têm características únicas.
3 . Crie a subclasse Gato
:
Animal
e sobrescreve o método emitirSom()
, além de adicionar um método específico arranharMoveis()
.public class Gato extends Animal {
@Override
public void emitirSom() {
System.out.println("Gato mia");
}
public void arranharMoveis() {
System.out.println("Gato está arranhando os móveis");
}
}
4 . Teste as classes:
Cachorro
e Gato
.public class TesteAnimais {
public static void main(String[] args) {
Animal meuCachorro = new Cachorro();
Animal meuGato = new Gato();
meuCachorro.emitirSom(); // Deve imprimir "Cachorro late"
((Cachorro) meuCachorro).abanarRabo(); // Deve imprimir "Cachorro está abanando o rabo"
meuGato.emitirSom(); // Deve imprimir "Gato mia"
((Gato) meuGato).arranharMoveis(); // Deve imprimir "Gato está arranhando os móveis"
}
}
Cachorro
e Gato
herdam de Animal
, o que significa que elas têm todos os métodos e atributos de Animal
, além dos seus próprios métodos específicos.@Override
para indicar que emitirSom()
nas subclasses Cachorro
e Gato
está substituindo o método da classe Animal
.main
, usamos o polimorfismo ao declarar meuCachorro
e meuGato
como Animal
, mas instanciá-los como Cachorro
e Gato
. Isso permite que a mesma referência (Animal
) possa se comportar de diferentes maneiras (como Cachorro
ou Gato
).Espero ter ajudado! E lembre-se que caso surja qualquer dúvida, pode comentar aqui no fórum, nossa comunidade está aqui para ajudar, eu mesma estou disponível e ficarei super feliz em poder contribuir com o seu aprendizado, o processo é dificil mesmo mas com dedicação e apoio a gente consegue!
Um forte abraço e bons estudos!