package inheritAnimals; public class PetHarness { public static void main(String[] args) { System.out.println("A Pet: "); Pet p = new Pet("amoeba I guess?", 0); System.out.println(p); p.setName("generic pet"); p.setAge(3); // protected technically means main can change because in same package // main really should be in different package, but our programs are very small p.age = -1000; // legal but BAD!!! System.out.println(p); p.eat(); p.sleep(); p.makeNoise(); System.out.println("A Dog: "); // Dog has everything Pet does, plus some Dog d = new Dog("Bosco", 2, "Bulabradoodlemuretriever"); System.out.println(d); d.setName("Roscoe"); d.setAge(3); d.setBreed("good dog"); // added for Dog System.out.println(d); d.eat(); d.sleep(); d.makeNoise(); System.out.println("A Budgie: "); // ERROR Budgie doesn't have param constructor of its own // Budgie b = new Budgie("Cpt. Feathers", 1); Budgie b = new Budgie(); System.out.println(b); b.setName("Tweety Pie"); b.setAge(2); System.out.println(b); b.eat(); b.sleep(); b.makeNoise(); // changed for Budgie b.makeNoise("who's a pretty bird then", 16); // added for Budgie b.fly(); // added for Budgie System.out.println("A Cat: "); Cat c = new Cat("Muffy", 7); System.out.println(c); c.setName("Clyde"); c.setAge(8); System.out.println(c); c.eat(); c.sleep(); c.makeNoise(); // overridden c.eat(b); // added for Cat } }