domingo, 1 de diciembre de 2013

Clases internas miembro (no static) - I

Las clases internas miembro o simplemente clases internas, son clases definidas al máximo nivel de la clase contenedora (directamente en el bloque de diminución de dicha clase), sin la palabra static. Se suelen llamar clases internas miembro o simplemente clases internas. 
No existen interfaces internas de este tipo. Las clases internas 110 pueden tener variables miembro static. Tienen una nueva sintaxis para las palabras this. new y super. que se verá 1111 poco más adelante. 
La característica principal de estas clases internas e que cada objeto de la clase interna existe siempre dentro de 1111 y sólo un objeto de la clase contenedora. Un objeto de la clase contenedora puede estar relacionado con uno o más objetos de la clase interna. Tener esto presente es muy importante para entender las características que se explican a continuación. Relación entre las clases interna y contenedora respecto al acceso a las variables miembro. 
  1. Debido a la relación uno a uno. los métodos de la clase interna ven dilectamente las variables miembro del objeto de la clase contenedora, sin necesidad de cualificarlos. 
  2. Sin embargo, los métodos de la clase contenedora no ven directamente las variables miembro de los objetos de la clase interna: necesitan cualificarlos con una referencia a los correspondientes objetos. Esto es consecuencia de la relación uno a varios que existe entre los objetos de la clase contenedora y los de la clase interna. 
  3. Otras clases diferentes de las clases contenedora e interna pueden utilizar directamente los objetos de la clase interna, sin cualificarlos con el objeto o el nombre de la clase contenedora. De hecho, se puede seguir accediendo a los objetos de la clase interna aunque se pierda la referencia al objeto de la clase contenedora con el que están asociados.
Respecto a los permisos de acceso:

  1. Las clases internas pueden también ser prívate y protected (las clases normales sólo pueden ser public y package). Esto permite nuevas posibilidades de encapsulación. 
  2. Los métodos de las clases internas acceden directamente a todos los miembros, incluso prívate, de la clase contenedora. 
  3. También la clase contenedora puede acceder -si dispone de una referencia- a todas las variables miembro (incluso prívate) de sus clases internas. 4. Una dase interna puede acceder también a los miembros (incluso prívate) de otras clases internas definidas en la misma clase contenedora.

No hay comentarios:

Publicar un comentario