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}