import javax.swing.JOptionPane;
public class Controle {
public static void main(String[] args) {
String nome;
Controle cont = new Controle();
nome = JOptionPane.showInputDialog("Digite o nome");
cont.somanimal(nome);
}
public void somanimal(String nome) {
if (nome.equalsIgnoreCase("cachorro")) {
new Cachorro().som();
}
if (nome.equals("cavalo")) {
new Cavalo().som();
}
}
}
Classe Cachorro
public class Cachorro extends Animal {
public void som() {
System.out.println("auauauauaua");
}
}
Classe Cavalo
public class Cavalo extends Animal {
@Override
public void som() {
System.out.println("Cavalo");
}
}
se eu digitar “preguiça” fica loop infinito. isso está certo? talvez por isso não apareça nada… você está digitando outra coisa que não seja cavalo ou cachorro
Ja que voce está usando polimorfismo tenta fazer assim:
[code]public abstract class Animal {
public abstract String somAnimal();
}[/code]
Voce coloca a classe animal como super classe dos animal, sobrescrevendo o metodo abstrato somAnimal(), em todas as outras classe com, por exemplo, a Cachorro:
public class Cachorro extends Animal{
public String somAnimal() {
String latir = "Auauauau";
return latir;
}
}
e na classe controle ficaria assim :
[code]public class Controle(){
public static void examinar(Animal animal){
String som = animal.somAnimal();
System.out.println(som);
}
public static void main(String[] args){
Cachorro cachorro = new Cachorro();
Cavalo cavalo = new Cavalo();
Preguica preguica = new Preguica();
Controle.examinar(cavalo);
Controle.examinar(cachorro);
Controle.examinar(preguica);
}
}[/code]
E assim qualquer animal que voce passar como argumento para o metodo animal vai pegar o metodo somAnimal(), da classe passada!!