// Written by: Darren Gates & Ray Klefstad // Date: January 2000 // School: U.C. Irvine import java.awt.*; import java.applet.*; public class InterfacesExample extends Applet { public void init() { TextArea pets = new TextArea(7, 35); Rabbit myRabbit = new Rabbit("Roger"); Cat myCat = new Cat("Sylvester"); Bunny myBunny = new Bunny("Bugs"); String message = myRabbit.feed() + myCat.feed() + myBunny.feed(); pets.setText(message); add(pets); } } interface Food { // constants and method declarations only public static final String Rabbit = "carrots"; public static final String Cat = "tuna"; public String feed(); } class Pet { protected String name; public Pet(String newName) { name = newName; } } class Rabbit extends Pet implements Food // must implement all methods of Food { public Rabbit(String name) { super(name); } public String feed() { return name + " should be fed " + Food.Rabbit + ".\n"; } } // since Bunny extends Rabbit, it also implements Food class Bunny extends Rabbit { public Bunny(String name) { super(name); } public String feed() { return name + ", the bunny, should be fed " + Food.Rabbit + ".\n"; } } class Cat extends Pet implements Food { public Cat(String name) { super(name); } public String feed() { return name + " should be fed " + Food.Cat + ".\n"; } }