Java

Tuesday, March 28, 2006

 

Inner Class

Uma classe interna é uma classe definida no interior de outra classe. Ela tem implicitamente uma referência para uma instância da classe externa e, por isso, pode utilizar as suas instâncias de variáveis, mesmo aquelas declaradas com o modificador private. Observe o exemplo abaixo.


public class MyOuter{
private int x=7;

public void makeInner(){
MyInner in = new MyInner();
in.seeOuter();
}

public static void main(String args[]){
MyOuter o = new MyOuter();
o.makeInner();
}

class MyInner{
public void seeOuter(){
System.out.println("Outer x is: "+x);
}
}
}

É possível criar uma instância da classe interna apartir de outra classe que não lhe seja imediatamente externa:

public class Outra{
public static void main(String args[]){
MyOuter mo = new MyOuter();
MyOuter.MyInner inner = mo.new MyInner();
//Outra possibilidade:
//MyOuter.MyInner inner = new MyOuter().new MyInner();
inner.seeOuter();
}
}

O ponto é que uma instância da classe interna só pode ser criada a partir da classe que lhe é imediatamente externa.

Se, a partir de uma instância da classe interna MyInner, eu preciso fazer uma referência para a instância da classe externa MyOuter, então devo utilizar this.MyOuter, enquanto this refere-se normalmente à instância da classe interna.

Comments: Post a Comment



<< Home

Archives

March 2006   April 2006   May 2006   July 2006   August 2006  

This page is powered by Blogger. Isn't yours?