Ir para o conteúdo
zemaluco

[Duvida] Static Nested Class

Mensagens Recomendadas

AngusYoung    5
AngusYoung

http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

A nested class is a member of its enclosing class.

Non-static nested classes (inner classes) have access to other members of the enclosing class, even if they are declared private.

Static nested classes do not have access to other members of the enclosing class.

As a member of the OuterClass, a nested class can be declared private, public, protected, or package private. (Recall that outer classes can only be declared public or package private.)

Desculpa estar em inglês, mas isto estava no primeiro link ao procurar "Static Nested Class" no google.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
AngusYoung    5
AngusYoung

Pelo que eu parcebi, as non-static nested têm acesso às outras classes no nest (dentro da classe onde estão inseridas);

  E as static nested não têm acesso às outras classes no nest.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
KTachyon    272
KTachyon

As nested classes são membros da classe que as contém, ou seja:

public class A {
    public class InA {}
    public static class InA_Static {}
}

InA e InA_Static são membros da classe A.

Tens a classe A.InA e a classe A.InA_Static. A classe A.InA tem acesso aos membros da classe A, mesmo que sejam privados, mas a classe A tem que ser previamente instanciada.

A classe A.InA_Static só tem acesso aos membros static da classe A e podes instanciar a classe A.InA_Static sem ter uma instancia de A. No fundo funciona como uma classe externa, cujo nome é A.InA_Static.

Dito de outra forma:

Para instanciares a classe A.InA dentro de uma instância de A (porque requer a referência a uma instância de A, como mencionei anteriormente):

A a = new A();
A.InA inA = a.new InA();

Para instanciares a static class não precisas de uma referência para A, logo:

A.InA_Static inA_static = new A.InA_Static();

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade