Este exemplo simples mostra a utilização de uma classe interna sem qualquer qualificação (private ou protected). Neste caso, a classe está meramente encapsulada pela classe externa (recorde-se que os objectos da classe interna referem implicitamente os da externa).
Gato
public class Gato { private boolean _comFome = true; class Estômago { private double _ph = 1.4; Estômago() { System.out.println("Estômago criado"); } void digere() { System.out.println("Digestão"); _comFome = false; } } Gato() { System.out.println("Gato criado"); } public boolean temFome() { return _comFome; } public void comer() { System.out.println("Gato: a comer..."); Estômago e = new Estômago(); e.digere(); } }
public class Teste1 { public static void main(String[] args) { Gato g = new Gato(); System.out.println("Gato com fome: " + g.temFome()); g.comer(); System.out.println("Gato com fome: " + g.temFome()); } }
$ java Teste1 Gato criado Gato com fome: true Gato: a comer... Estômago criado Digestão Gato com fome: false
$ ls Gato.java Gato.class Gato$Estômago.class Teste1.java Teste1.class