1
resposta

[Projeto] Desafio animais

Ao criar a classe animal, a IDE sugeriu que a mesma fosse definida como abstract e gostaria de saber o porque.

package DesafiosCap3;

public abstract class Animal {

    private String som;

    public void emitirSom() {
        System.out.println("Barulho do animal");
    }
}

package DesafiosCap3;

public class Cachorro extends Animal{

    String nomecachorro;


    @Override
    public void emitirSom() {
        System.out.println("AU AU AU" );
    }

    public void abanarRabo(){
        System.out.println("rabo abanando");
    }

    public void identificar(String nome){
        this.nomecachorro = nome;
        System.out.printf("O nome do cachorro é %s\n", nomecachorro);
    }


}

package DesafiosCap3;

public class Gato extends Animal{

    String nomeGato;

    public String getNomeGato() {
        return nomeGato;
    }

    public Gato setNomeGato(String nomeGato) {
        this.nomeGato = nomeGato;
        return this;
    }

    @Override
    public void emitirSom() {
        System.out.println("miau miau miau");
    }

    public void ronronar(){
        System.out.println("prr prr prr");
    }

    public void identificar(String nome){
        this.nomeGato = nome;
        System.out.printf("O nome do gato é %s\n", nomeGato);
    }

    public static void main(String[] args) {
        Cachorro c1 = new Cachorro();
        Gato g1 = new Gato();

        c1.identificar("Apollo");
        c1.emitirSom();
        c1.abanarRabo();

        g1.identificar("Camila");
        g1.emitirSom();
        g1.ronronar();

    }
}
1 resposta

Oi, Maria! Tudo bem?

A sugestão de definição da classe Animal como abstract ocorre pois essa classe representa o conceito de abstração dentro da programação orientada a objetos, muito utilizada para representar objetos complexos de forma simplificada, de forma que criamos uma estrutura básica para a implementação de classes filhas, garantindo que elas implementem as funcionalidades essenciais definidas pela classe abstrata.

Podemos observar que no mundo real, "animal" é uma ideia geral que abrange muitas espécies específicas, como cachorros, gatos, cavalos, etc., por isso conseguimos representar um conceito geral e que não é destinada a ser instanciada diretamente, o que define uma classe abstrata.

Dessa forma, Animal é uma classe abstrata que tem um método emitirSom(), em que as classes Cachorro e Gato estendem Animal, o que significa que elas herdam todos os métodos e atributos da classe Animal. No entanto, como cachorros e gatos emitem sons diferentes, sobrescrevemos o método emitirSom() em cada uma dessas subclasses para que elas emitam o som correto.

Espero ter ajudado! Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓