/ / obter uma referência a uma classe contendo em java - java

obter uma referência a uma classe contendo em java - java

Eu sou novo em Java. Eu sou um programador C ++, lendo algum código Java. Eu tenho essa definição de classe:

class Container {
long ID;

class Contained {
void foo(){
long parentID = ID;
}
}
}

Vejo que o Contained pode acessar qualquer membro da classe Container, simplesmente pelo nome.

Eu tenho uma pergunta:

O que está acontecendo aqui? Em C ++, essas classes não seriam relacionadas. Mas em Java, parece, o objeto de classe contido parece estar implicitamente ligado à instância do objeto de classe pai.

obrigado Manish

PS: Desculpe, eu sei que poderia pegar um livro sobre Java, mas eu esperava que alguém pudesse me ajudar.

Respostas:

3 para resposta № 1

Desde o Contained classe não é declarada como static, isso significa que só pode existir dentro de uma instância de um Container classe e, portanto, tem acesso a todos os métodos e variáveis ​​de Container.

Se você tivesse declarado Contained Como static, ele imitaria o uso de C ++ ao qual você está mais habituado - ou seja, você poderia ter uma instância da classe aninhada sem ter uma instância de Container.

Vejo Classe interna de Java e classe aninhada estática para mais detalhes.


3 para resposta № 2

Em Java, eles são chamados de classes aninhadas. Existem vários tipos de classes aninhadas com semânticas diferentes. Há informações em http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html.

No seu exemplo que é uma classe interna, suas instâncias existem dentro de uma instância da classe externa.


0 para resposta № 3

Esta é uma classe aninhada. Seu ciclo de vida está vinculado à classe pai. Ler Aqui para total compreensão.