Nested Classes

5 respostas
S

Boa tarde galera,

Tenho esse código e gostaria de saber pq n imprime “Classe B em A”

class A{
 
 	public A(){
 		System.out.println("Classe A");
 	}

	public B classeB(){
		return new B() { 
			public void B(){ 
				System.out.println("Classe B em A"); 
			} 
		};
	}
 
 }

 class B{
 
 	public B(){
 		System.out.println("Classe B");
 	}

 }

class  TesteAninhado{
	public static void main(String[] args){
		A i = new A();
		i.classeB();
	}
}

Desculpem minha burrice

5 Respostas

neohacker
Vamos tentar analizar:
class  TesteAninhado{
 	public static void main(String[] args){
 		A i = new A();
 		i.classeB();
 	}
 }
A i = new A();
Nesta parte vamos até o construtor da classe A
class A{
  
  	public A(){
  		System.out.println("Classe A");
  	}
Aqui ja será impresso 'Classe A'
i.classeB();
Aqui vamos até o método classeB
public B classeB(){
 		return new B() { 
 			public void B(){ 
 				System.out.println("Classe B em A"); 
 			} 
 		};
 	}
Quando ele faz return new B() vamos até o construtor da classe B
class B{
  
  	public B(){
  		System.out.println("Classe B");
  	}
 
  }
E aqui temos a impressão de 'Classe B' e termina porque public void B() nunca será usado concorda ??

Espero q tenha entendido
8)

S

neohacker,
quase…agora me diga pq eu n posso tirar esse void?

public B classeB(){
  		return new B() { 
  			public void B(){ 
  				System.out.println("Classe B em A"); 
  			} 
  		};
  	}
S

ih entendi foi mal hehehe
valeu :smiley:

neohacker

Entendeu na boa??
entaum ta certo se precisar estamos ae ok??

S

hehehe de boa
valeu :smiley:

Criado 8 de maio de 2007
Ultima resposta 8 de mai. de 2007
Respostas 5
Participantes 2