Dúvida em um caso de criação de Objeto

2 respostas
C

E ai pessoal. 8) Estou com uma dúvida na questão de criação de objetos.
Tenho duas classes: Mamífero e Humano. A classe Humano herda a classe Mamífero.

public class Mamifero {
    
    private String altura;
    private int idade;
 
public void setAltura(String altura) {
        this.altura = altura;
    }

   
}

public class Humano extends Mamifero {

    private String nome;
    private String sexo;
 
public void setNome(String nome) {
        this.nome = nome;
    }

}

Minha dúvida está na forma de instanciar. Qual seria a diferença entre as duas formas de instanciar abaixo? (esta questão caiu em um concurso).

Mamifero m1=new Humano(); //m1 recebe o endereço da classe Humano
Mamifero m2=new Mamifero();//m2 recebe o endereço da classe Mamifero

Obs: reparei que m1 e m2 acessa os mesmo métodos de Mamífero. Em m1 não consegui entender a necessidade de utilizar new Humano() ao invés
de new Mamifero();

Espero uma ajuda, obrigado!

2 Respostas

thiago_pco

Fala chiasmodon,

Eh o seguinte, isso trata- se de um exemplo básico de Polimorfismo em java (Dá uma olhada a mais no assunto).
Basicamente consiste em tratar objetos de uma forma mais “genérica”.

No caso sitado por vc eh possível sim utilizar métodos da classe Mamífero a partir das duas instâncias, porém n eh possível acessar métodos da classe Humano. Mesmo que m1 seja uma instância de Humano.

Existem muuuitos cenários que podemos brincar com isso na prática!
Como disse acima, aconselho bastante uma melhor estudada no assunto: Polimorfismo.

C

Beleza cara! Vou dar uma estudada aqui sim. Obrigado ai!

Criado 3 de agosto de 2012
Ultima resposta 3 de ago. de 2012
Respostas 2
Participantes 2