Classes Internas (Java)/Gato e Estômago/Classes interna e externa
From Wiki**3
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