1 public class TestEdible {
2 public static void main(String[] args) {
3 Object[] objects = {new Tiger(), new Chicken(), new Apple()};
4 for (int i = 0; i < objects.length; i++) {
5 if (objects[i] instanceof Edible)
6 System.out.println(((Edible)objects[i]).howToEat());
7
8 if (objects[i] instanceof Animal) {
9 System.out.println(((Animal)objects[i]).sound());
10 }
11 }
12 }
13 }
14
15 abstract class Animal {
16 private double weight;
17
18 public double getWeight() {
19 return weight;
20 }
21
22 public void setWeight(double weight) {
23 this.weight = weight;
24 }
25
26
27 public abstract String sound();
28 }
29
30 class Chicken extends Animal implements Edible {
31 @Override
32 public String howToEat() {
33 return "Chicken: Fry it";
34 }
35
36 @Override
37 public String sound() {
38 return "Chicken: cock-a-doodle-doo";
39 }
40 }
41
42 class Tiger extends Animal {
43 @Override
44 public String sound() {
45 return "Tiger: RROOAARR";
46 }
47 }
48
49 abstract class Fruit implements Edible {
50
51 }
52
53 class Apple extends Fruit {
54 @Override
55 public String howToEat() {
56 return "Apple: Make apple cider";
57 }
58 }
59
60 class Orange extends Fruit {
61 @Override
62 public String howToEat() {
63 return "Orange: Make orange juice";
64 }
65 }