Inner Class - Tensho97/Aprende-a-Aprender GitHub Wiki

Una clase interna no es más que una clase dentro de otra clase. Es una caracteristica de Java que permite controlar la visibilidad y relacionarlas logicamente.

Se puede definir una clase interna de la siguiente manera:

class Externa {
    . . .
    class Interna {
        . . .
    }
}

La clase Externa puede instanciar y usar la clase Interna como cualquier otra? sin limitación ni cambio en la sintaxis de acceso:

class Externa {
    . . .
    class Interna {
        . . .
    }
    void metodo() {
        Interna i = new Interna(. . .);
        . . .
    }
}

Ejemplo:

class Almacen {
    private Object [] listaObjetos;
    private numElementos = 0;
    Almacen (int maxElementos) {
        listaObjetos = new Object[maxElementos];
    }
    public Object get(int i) {
        return listaObject[i];
    }
    public void add(Object obj) {
        listaObjetos[numElementos++] = obj;
    }
    public Iterador getIterador() {
        new Iterador();
    }
    
    class Iterador {
        int indice = 0;
        Object siguiente() {
            if (indice < numElementos) return listaObjetos[indice++];
            else return null;
        }
    }
}

y la forma de usarse, sería:

Almacen alm = new Almacen(10); // se crea un nuevo almacen
. . .
alm.add(...);    // se añaden objetos
. . .
// para recorrerlo
Almacen.Iterador i = alm.getIterador(); // obtengo un iterador para alm
Object o;
while ( (o = i.siguiente()) != null) {
    . . .
}

Relacionado



Autores : Vanesa, Julián