Atribuindo um objeto á uma referencia diferente

2 respostas
R

[/code]Olá, sou novo aqui no fórum e tenho uma dúvida.

public class A {

public void go(){
System.out.println("A");
}

}

public class B extends A {

public void go(){
System.out.println("B");
}

}

public static void main(String[] args) {

A a = new A();
A b = new B();

a.go();
b.go();

}

O resultado é: A
B

Porque que acontece isso???
VLW.[code]

2 Respostas

carlos.uneb

Cara,

Isto se chama polimorfismo, você criou a classe A e criou na classe a o método GO(), e na classe B (que estende de A) você sobrescreveu o comportamento do GO da classe A.

Isto é importante na orientação a objetos, visto que podemos ter objetos diferentes mas que com a mesma chamada é possível fazer coisas diferentes.

rmendes08

Bem, sendo mais preciso, isso se chama dynamic binding. Ou seja, a chamada de métodos é resolvida em tempo de execução, e o método chamado é aquele definido na CLASSE DO OBJETO, e não na classe da referência. Assim, mesmo que um objeto da sua classe B seja referenciado por uma variável de referência da classe A, ao chamar o método go() a JVM “sabe” que o objeto na heap é da classe B e invoca o método implementado na classe B. Caso não haja uma implementação na classe B, ele começa a subir na hierarquia de classes …

Criado 13 de dezembro de 2008
Ultima resposta 14 de dez. de 2008
Respostas 2
Participantes 3