Herdando de uma “Regular” Inner Class

Mostrando como herdar de uma classe interna

package xxy;

class Outer {

public void doSomething() {

Inner i = new Inner();

}

public class Inner {

@Override

public String toString() {

return Outer.this + “/Inner”;

}

}

@Override

public String toString() {

return “Outer”;

}

}

class Another extends Outer.Inner {

public Another() {

new Outer().super();

}

@Override

public String toString() {

return “AnotherClass”;

}

}

public class OuterTest4 {

public static void main(String args[]){

Outer.Inner i = new Outer().new Inner();

System.out.println(i);

Another a = new Another();

System.out.println(a);

}

}

Output:

Outer/Inner

AnotherClass

Ficou com dúvida quanto a linha new Outer().super() ??? Veja:


Em uma classe comum do java,

public class MinhaClasse{

public void doSomething(){

}

}

O compilador traduz para:

public class MinhaClasse{

public MinhaClasse(){

super();

}

public void doSomething(){

}

}

Portanto, na linha new Outer().super() estamos construindo a classe externa e chamando o construtor da classe da qual ela herda (Object implicitamente). Sem esta linha a classe interna não poderá ser extendida, visto que ela é interna a Outer.

Anúncios
Esta entrada foi publicada em inner class 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 )

Google+ photo

Está a comentar usando a sua conta Google+ 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 )

w

Connecting to %s