Notei que o método get deve ser definido na interface para que possa fazer o polimorfismo, gostaria de saber se a idéia que fiz esta correta.
package animal;
public interface Animal { public abstract String fala(String fala); public abstract String getFala(); // Definir o método getFala no contrato permite chamar na classe Acao o getFala e aplicar o polimorfismo.Essa técnica substitui o polimorfismo gerado pela herança ou resolve a falta das multiplas heranças.
}
package animal;
public class Acao { public void falar(Animal a)** // <- Aplicando o polimorfismo { System.out.println(a.getFala());
} }
package animal;
public class Cachorro implements Animal { private String fala;
@Override public String fala(String fala) {
return this.fala = fala;
}
@Override public String getFala() { // TODO Auto-generated method stub return this.fala; } }
package animal;
public class Falar {
public static void main(String[] args) {
// TODO Auto-generated method stub
Cachorro cao =new Cachorro();
cao.fala("AU AU");
Gato cat = new Gato();
cat.fala("Miau");
Acao acao = new Acao();
acao.falar(cao);
acao.falar(cat);
}
}