Polimorfismo Java - Exemplo 2
De Aulas
Links relacionados: Programação em Java
Classe Animal
1public class Animal {
2 private String som;
3
4 public Animal(String som) {
5 this.som = som;
6 }
7
8 public void emitirSom() {
9 System.out.println(getClass().getName() + " faz " + som);
10 }
11}
Classe Vaca
1public class Vaca extends Animal {
2 public Vaca() {
3 super("muuuu");
4 }
5}
Classe Gato
1public class Gato extends Animal {
2 public Gato() {
3 super("miau");
4 }
5
6 public void emitirSom() {
7 System.out.println("O gato, enquanto anda sorrateiramente na noite");
8 System.out.println("---------------------");
9 super.emitirSom();
10 System.out.println("---------------------");
11 }
12}
Classe Cao
1public class Cao extends Animal {
2 public Cao() {
3 super("Au au");
4 }
5}
Classe Chiwawa
1public class Chiwawa extends Cao {
2
3 public void emitirSom() {
4 System.out.println("Sou um chiwawa e não tenho latido legal.");
5 }
6
7 public void pula() {
8 System.out.println("Chiwawa pulando...");
9 }
10}
Programa
1import java.util.ArrayList;
2import java.util.Date;
3import java.util.List;
4import java.util.Random;
5
6public class Main {
7 public static void main(String[] arguments) {
8 List<Animal> animais = new ArrayList<Animal>();
9
10 Random r = new Random();
11 Date d = new Date();
12 r.setSeed(d.getTime());
13 final int TOTAL = 10;
14 for (int i = 0; i < TOTAL; i++) {
15 int tipo = r.nextInt(4);
16 switch (tipo) {
17 case 0:
18 animais.add(new Cao());
19 break;
20 case 1:
21 animais.add(new Gato());
22 break;
23 case 2:
24 animais.add(new Vaca());
25 break;
26 case 3:
27 animais.add(new Chiwawa());
28 break;
29 }
30 }
31 for (Animal animal : animais) {
32 animal.emitirSom();
33 if (animal instanceof Chiwawa) {
34 ((Chiwawa) animal).pula();
35 }
36 }
37 }
38}