Inner Classes Anomimas + Métodos private (Resolvido)

6 respostas
andersonlandim

Neste código eu não entendo uma coisa… No caso do método doSomething ser private o método da classe interna é executado, se este mesmo método for public, default ou protected, o método executado é o da classe anômima;

Minha dúvida: Sendo assim, os membros private, métodos private são acessados pela classe dona da innerclass?

public class InnerClass {	
	
	Inner i = null;
	
	private class Inner {		
		Inner(){
			System.out.println("Instância inner Class");	
		}

		 private void doSomething() {
			System.out.println("Instância inner Class Anonim Private");			
		}	
	}
	
	public InnerClass(){
		this.i = new Inner() {
			@SuppressWarnings("unused")
			public void doSomething(){
				System.out.println("Instância inner Class Anonim Public");
			}
		};
		this.i.doSomething();
	}
}

6 Respostas

evertonsilvagomesjav

Então cara, quando vc tem um método private, logo vc nao consegue sobreescrevê-lo, por isso ta acessando o método da classe interna e nao da anonima.

Agora onde ta o método doSomething? rsrs

andersonlandim

Mandei o código errado… :frowning: O método doSomething seria (deveria ser) o Inner… Vou editar.

evertonsilvagomesjav

Vai dar no mesmo, a questão é que nao tem como vc sobreescrever um metodo private, por isso ta imprimindo o da classe interna e nao da anomima.

andersonlandim

Com relação ao exemplo… Então a classe consegue acessar os métodos private da inner class? Achei que seria somente o contrário, a classe interna que poderia acessar membros private da classe em que ela esta contida.

evertonsilvagomesjav

Somente de dentro da classe “encapsuladora” vc consegue acessar os metodos private da classe Interna (encapsulada).

A classe interna tb consegue acessar atributos e métodos privates da classe “Encapsuladora”.

andersonlandim

Cara valeu era isso mesmo. Estava meio confuso com relação a isso!

vlw

Criado 13 de setembro de 2010
Ultima resposta 13 de set. de 2010
Respostas 6
Participantes 2