Professional Documents
Culture Documents
1
Permiten el anidamiento de clases Definicin de una clase dentro de otra Definicin de una clase localmente a un bloque de cdigo Propsito Agrupacin de clases relacionadas Control de visibilidad de las clases Proximidad entre la definicin y el uso de las clases Definicin de clases simples de ayuda o adaptacin
Clases internas
Cdigo ms claro que evita el exceso de clases muy pequeas que no necesitan conocer los usuarios de un paquete
Java BFM 1 Java BFM 2
NombreClaseExterna.NombreClaseInterna
Desde la clase esttica interna slo se pueden acceder a los miembros estticos de la clase externa Nombrado fichero .class
NombreClaseExterna$NombreClaseInterna
4
Java BFM
Java BFM
Clases miembro
Clase interna definida como miembro (no static) de otra clase contenedora Pueden declararse como privadas o protegidas (esto no impide su acceso desde la clase contenedora) Cada instancia de una clase miembro se asocia internamente a una instancia de la clase contenedora Tiene acceso completo y directo a la clase externa (incluido miembros private)
Simplifica el cdigo
No puede tener miembros estticos No pueden tener nombres comunes con la clase externa
Conflicto de nombrado
No es posible crear un objeto de la clase interna sin tener un objeto de la clase contenedora Java BFM
Java BFM
Clases miembro
Nueva sintaxis de this, new y super Referencia al objeto de la clase contenedora
Clases locales
Clase interna definida dentro de un bloque de cdigo Slo son visibles y utilizables dentro del bloque de cdigo en el que se encuentran definidas Pueden usar variables locales y parmetros de mtodo declarados como final
// pruebas con new // fallara si la clase enumerador se hubiera declarado privada PilaArray.Enumerador enum2 = pila.new Enumerador(); while (enum2.hasMoreElements()) { String cad = (String) enum2.nextElement(); System.out.println( cad ); }
Java BFM 9
No pueden incluir un modificador de acceso ni ser estticas Uso extensivo en el nuevo tratamiento de eventos de Java 1.1 Creacin de clases de ayuda o adaptacin que no estn disponibles pblicamente (inaccesibles)
Java BFM
10
Clases annimas
Clase interna local sin nombre Se define e instancia en una sola operacin Slo puede existir una instancia de una clase annima Una clase annima puede ser incluida en una expresin java Los constructores annimos deben ser sencillos para evitar la excesiva anidacin de cdigo Muy utilizado en adaptadores de clase Aadir comportamiento a objetos que ya tienen nombre (AWT, Swing) Escritura de pequeos callbacks encapsulados (enumeradores, iteradores, )
Java BFM 12
Java BFM
13