lunes, 2 de diciembre de 2013

Clases internas miembro (no static) - II

Otras características de las clases internas son las siguientes: 
  1. 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). 
  2. 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. 
  3. 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