Polimorfismo apenas para métodos de instância

 

public class Teste {

public static void main(String args[]){

Pai p = new Filha();

System.out.println(p.minhaIdade); // polimorfismo apenas para métodos de instância! Aqui NÃO ocorre.

System.out.println(p.getMinhaIdade());

p.getMinhaIdade2();

}

}

 
 

class Pai {

public final int minhaIdade = 67;

public int getMinhaIdade(){

return this.minhaIdade;

}

public void getMinhaIdade2(){

System.out.println(this.minhaIdade);

}

}

 
 

class Filha extends Pai {

public final int minhaIdade = 34;

public int getMinhaIdade(){

return this.minhaIdade;

}

public void getMinhaIdade2(){

System.out.println(this.minhaIdade);

}

}

Output:

67

34

34

 
 

Observações importantes:

  1. Repare que apesar de tanto a classe Pai quanto a classe Filha declararem uma variável de instância chamada ‘minhaIdade’, elas não se sobrescrevem apesar da relação de herança entre as duas classes. Cada classe continua tendo a sua variável ‘minhaIdade’ independentemente da relação de herança.
  2. O fato da variável ‘minhaIdade’ da classe Pai ter sido declarada como final, não significa que ela não pode ser sobrescrita, mesmo porque, sobrescrever só ocorre para métodos. Significa apenas que o seu valor não poderá ser re-atribuido.
Esta entrada foi publicada em Java com as etiquetas . ligação permanente.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s