Classes Internas (Java)/Gato e Estômago/Classes interna e externa

From Wiki**3

< Classes Internas (Java)‎ | Gato e Estômago

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).

Classe 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();
   }
 }

Teste

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

Resultado

 $ 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