Otras características de las clases internas son las siguientes:
- Una clase interna miembro puede contener otra clase interna miembro, hasta el nivel que se desee (aunque no se considera buena técnica de programación utilizar muchos niveles).
- En la clase interna, la palabra this se refiere al objeto de la propia clase interna. Para acceder al objeto de la clase contenedora se utiliza ClaseContenedora.tlíis.
- Para crear un nuevo objeto de la clase interna se puede utilizar new. precedido por la refe- rencia al objeto de la dase contenedora que contendía el nuevo objeto: unObjCC.newQ. El tipo del objeto es el nombre de la clase contenedora seguido del nombre de la clase interna, como por ejemplo:
ClaseCont.Claselnt unObjClInt =
unObjClaCont.new Claselnt (...);
4. Supóngase como ejemplo adicional que B es una clase interna de A y que C es una clase
interna de B. La creación de objetos de las tres clases se puede hacer del siguiente modo:
A a = new A(); // se crea un objeto de la clase A
A.B b = a.new B(); // b es un objeto de la clase interna B
dentro de a
A.B.C c = b.new C(); // c es un objeto de la
clase interna C dentro de b
5. Nunca se puede crear un objeto de la clase interna sin una referencia a un objeto de la
clase contenedora. Los constructores de la clase interna tienen como argumento oculto
una referencia al objeto de la clase contenedora.
6. El nuevo significado de la palabra super es un poco complicado: Si una clase deriva de
una clase interna, su constructor 110 puede llamar a super() directamente. Ello hace que el
compilador 110 pueda crear 1111 constructor por defecto. Al constructor hay que pasarle una
referencia a la dase contenedora de la clase interna super-clase, y con esa referencia ref
llamar a ref super ().
No hay comentarios:
Publicar un comentario