Clases internas locales

Las clases internas locales o simplemente clases locales no se declaran dentro de otra clase al máximo nivel, sino dentro de un bloque de código , normalmente en un método, aunque también se pueden crear en un inicializador static o de objeto.

Las principales características de las clases locales so las siguientes:

1. Como las variables locales, las clases locales sólo son visibles y utilizables en el bloque de código en el que están definidas. Los objetos de la clase local deben ser creados en el mismo bloque en que dicha clase ha sido definida. De esta forma se puede acercar la definición al uso de la clase.

2. Las clases internas locales tienen acceso a todas las variables miembro y métodos de la clase contenedora. Pueden ver también los miembros heredados, tanto por la clase interna local como por la clase contenedora.

3. Las clases locales pueden utilizar las variables locales y argumentos de métodos visibles en ese bloque de código, pero sólo si son final5 (en realidad la clase local trabaja con sus copias de las variables locales y por eso se exige que sean final y no puedan cambiar).

4. Un objeto de una clase interna local sólo puede existir en relación con un objeto de la clase contenedora, que debe existir previamente.

5. La palabra this se puede utilizar en la misma forma que en las clases internas miembro, pero no las palabras new y super.

Restricciones en el uso de las clases internas locales:

1. No pueden tener el mismo nombre que ninguna de sus clases contenedoras.

2. No pueden definir variables, métodos y clases static.

3. No pueden ser declaradas public, protected, private o package, pues su visibilidad es siempre la de las variables locales, es decir, la del bloque en que han sido definidas.

Fuente: Aprenda Java como si estuviera en primero de la Universidad de Navarra