Clases internas en java
Una clase interna es una clase definida dentro de otra clase, llamada clase contenedora, en alguna variante de la siguiente forma general:
class ClaseContenedora {
…
class ClaseInterna {
…
}
…
}
Las clases internas fueron introducidas en la versión Java 1.1. Además de su utilidad en sí, las clases internas se utilizan mucho en el nuevo modelo de eventos que se introdujo en dicha versión de Java.
Hay cuatro tipos de clases internas:
1. Clases internas static.
2. Clases internas miembro.
3. Clases internas locales.
4. Clases anónimas.
En lo sucesivo se utilizará la terminología clase contenedora o clase global para hacer referencia a la clase que contiene a la clase interna.
Hay que señalar que la JVM (Java Virtual Machine) no sabe nada de la existencia de clases internas. Por ello, el compilador convierte estas clases en clases globales, contenidas en ficheros *.class cuyo nombre es ClaseContenedora$ClaseInterna.class.
Esta conversión inserta variables ocultas, métodos y argumentos en los constructores. De todas formas, lo que más afecta al programador de todo esto es lo referente al nombre de los ficheros que aparecen en el directorio donde se realiza la compilación, que pueden resultar sorprendentes si no se conoce su origen.
Fuente: Aprenda Java como si estuviera en primero de la Universidad de Navarra