Código:
class ClaseExterna{
class ClaseInternaNoEstatica{}
static class ClaseInternaEstatica{}
}
Código:
ClaseExterna obj = new ClaseExterna();
Código:
ClaseExterna.ClaseInternaNoEstatica obj2 = obj.new ClaseInternaNoEstatica();
Código:
ClaseExterna.ClaseInternaNoEstatica obj2 = new ClaseExterna().new ClaseInternaNoEstatica();
Código:
ClaseExterna.ClaseInternaEstatica obj = ClaseExterna.new ClaseInterna();//Error de compilación
Código:
ClaseExterna.ClaseInternaEstatica obj = new ClaseExterna.ClaseInternaEstatica();
Otra duda: cuando implemento una clase interna (tanto si es estatica como si no, da lo mismo) y trato de acceder a un atributo privado del mismo desde la clase externa no da error. ¿Por qué?
Código:
class ClaseExterna{
class ClaseInterna{private int atributoInterno = 7;}
int atributoExterno = new ClaseInterna().interna;//No da error de compilación
}
Entiendo que la clase interna pueda acceder a los miembros de la clase externa aunque sean privados, pero no entiendo por qué se puede hacer también lo contrario.