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");
}
}