Sobreposição é apenas para métodos, não para variáveis (Overriding is only for methods not for variables)

 
 

public class Teste {

public static void main(String[] args){

A a = new B();

System.out.println(a.i);

 
 

Covariant c = new SubCovariant();

System.out.println(c.getObject().i);

}                

}

 
 

class A {

int i = 5;

}

class B extends A {

int i = 6;

}

 
 

class Covariant {

public A getObject(){

System.out.println(“Covariant.getObject()”);

return new A();

}

}

class SubCovariant extends Covariant{

public B getObject(){

System.out.println(“SubCovariant.getObject()”);

return new B();

}

}

Output:

5

SubCovariant.getObject() // apesar de ter executado o método na superclasse o retorno é da subclasse

5

Anúncios
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