Clases internas en Java

Curso de Java

11.  
22.  

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Son aquellas cuya definición está dentro de otra. Una clase interna puede sobrescribir métodos de la clase que la contiene.

public class ClaseExterna {
 private String nombreExt = "Juan";
 class ClaseInterna{
  private String nombreInt = "Pepe";
  public void mostrarNombre(){
   System.out.println(nombreInt);
   System.out.println(nombreExt);
  }
 }
 public void mostrarNombre(){
  System.out.println("Juan");
 }
 public static void main(String[] args) {
  //Puedo acceder a los variables miembro privadas de la clase interna, pero no de la externa
  ClaseExterna claseExterna = new ClaseExterna();
  ClaseInterna claseInterna = claseExterna.new ClaseInterna();
  //Puedo acceder a los metodos de la clase externa
  claseInterna.mostrarNombre();
 }
}

Output:
Pepe
Juan

Clase interna anónima (anonimous inner class)

Se sobrescribe uno o varios métodos de la clase que se está instanciando en una sola operación.

public class C_claseInternaAnonima {
 public static void main(String args[]){
  Comida2 comida = new Comida2() {
   public void comer() {
    System.out.println("Método \"comer\" de la clase Comida2 sobrescrito");
   }
  };
  comida.comer();
 }
}
class Comida2 {
 public void comer() {
  System.out.println("Comiendo");
 }
}

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.