domingo, 16 de dezembro de 2012

Classes internas

Uma member class é uma classe que é declarada como não estática dentro de uma outra classe (a que a member class pertence). É o equivalente a um atributo primitivo de uma classe.

Desta forma uma classe membro é associada a uma instância da classe que a contém, o que implica que o código da classe membro tem acesso a todos os atributos da instância e também aos métodos, mesmo a aqueles que foram declarados como private.

Uma classe membro pode receber qualquer um dos três modificadores de visibilidade possíveis (public, private ou protected). Se nenhum dos três for explicitado, a visibilidade será para o pacote. Exatamente igual a qualquer outra classe.

Existem algumas regras para criar uma classe membro:
  • ela não pode ter o mesmo nome da classe que a contém nem do pacote
  • não pode conter atributos, métodos ou classes estaticas (declaradas com o modificados static)
  • não podem ser interfaces
Vamos ver um exemplo
 O resultado de algumas rodadas é:

Vamos ver uma nova classe. Neste exemplo abaixo criamos uma classe com um escopo bastante limitado... somente dentro da cláusula THEN.

Na primeiro compilação abaixo, retirei o comentário que tenta criar uma nova instância da classe BuscaPacote fora do escopo para podermos ver o erro que ocorre. Note que o compilador retorna que não acha a classe (o que era de espera já que afinal ela está definida em outro escopo).

Comentando novamente, é possível compilar e ao rodar temos o retorno de getID().


Nenhum comentário:

Postar um comentário