Classes Internas (Java)/Gato e Estômago/Classe interna a um método
From Wiki**3
A interface Estômago (implementada pela classe interna) é como anteriormente.
Classe Gato
public class Gato {
private boolean _comFome = true;
Gato() { System.out.println("Gato criado"); }
// ERRO: "EstômagoDeGato" está definida apenas em "comer"
// public Estômago getEstômago() { return new EstômagoDeGato(); }
public boolean temFome() { return _comFome; }
public void comer() {
class EstômagoDeGato implements Estômago {
private double _ph = 1.4;
private boolean _comBolaDePelo = false;
EstômagoDeGato() { System.out.println("Estômago criado"); }
public void digere() {
System.out.println("Digestão");
}
void eliminaBolaDePêlo() {
System.out.println("Bola de pêlo... ghh, gaah, ghh... eliminada");
_comFome = false;
}
}
System.out.println("Gato: a comer...");
EstômagoDeGato e = new EstômagoDeGato();
e.digere();
e.eliminaBolaDePêlo();
}
}
Teste
public class Teste4 {
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());
}
}
Resultados
$ java Teste4 Gato criado Gato com fome: true Gato: a comer... Estômago criado Digestão Bola de pêlo... ghh, gaah, ghh... eliminada Gato com fome: false
$ ls Estômago.java Estômago.class Gato.java Gato.class Gato$1EstômagoDeGato.class Teste4.java Teste4.class