1.在第三题的进行功能扩展。
(1)增加一种新的动物类型:Pig(猪),实现shout()方法。
(2)修改Store类的get()方法:如果传入的参数是字符串dog,则返回一个Dog对象;如果传入的参数是字串 pig,则返回一个Pig对象;否则,返回一个Cat对象。
(3)在测试类Test中加以测试:向Store类的get()方法中传入参数“pig”,并返回的对象中调用shout()方 法,看看与预期的结果是否一致。
>定义Eatble接口,在接口中定义eat( )方法,表示吃饭功能。
>定义FlyingDiscCatchable接口,在接口定义中catchingFiyDise( )方法,表示接飞盘功能。
>定义Swimmable接口,在接口中定义swim( )方法,表示游泳功能。
>定义抽象类Pet,包括宠物名称(mane),健康值(health),和主人亲密度(love)属性。并提供抽象方法print( ),用来输出宠物信息。
>定义狗类Dog,继承Pet类,实现Eatable和FlyingDiscCatchable接口,并重写或实现各个方法。
>定义企鹅类Penguin,继承Pet类,实现Eatable和Swimmble接口,并重写或实现各个方法。
>编写测试类,实现狗吃饭,企鹅游泳和狗玩飞盘游戏的功能,并输出企鹅信息。
(1)增加一种新的动物类型:Pig(猪),实现shout()方法。
(2)修改Store类的get()方法:如果传入的参数是字符串dog,则返回一个Dog对象;如果传入的参数是字串 pig,则返回一个Pig对象;否则,返回一个Cat对象。
(3)在测试类Test中加以测试:向Store类的get()方法中传入参数“pig”,并返回的对象中调用shout()方 法,看看与预期的结果是否一致。
package kehouzuoye; public interface Animal { void shout();//动物叫声方法 }package kehouzuoye; public class Cat implements Animal { @Override public void shout() { // 实现猫叫 System.out.println("M M!"); } }package kehouzuoye; public class Dog implements Animal { @Override public void shout() { //实现狗叫 System.out.println("w w!"); } }package kehouzuoye; public class Pig implements Animal { @Override public void shout() { // 实现猪叫 System.out.println("猪叫"); } }package kehouzuoye; public class Store { public static Animal get(String choice) {//返回类型为接口Animal的带参方法 if(choice.equalsIgnoreCase("dog")) { return new Dog(); }else if(choice.equalsIgnoreCase("pig")) { return new Pig(); }else { return new Cat(); } } }package kehouzuoye; public class AnimalTest { public static void main(String[] args) { Animal a = Store.get("pig"); a.shout(); } }2.对贯穿本书的案列电子宠物系统的类结构进行重构,要求如下:
>定义Eatble接口,在接口中定义eat( )方法,表示吃饭功能。
>定义FlyingDiscCatchable接口,在接口定义中catchingFiyDise( )方法,表示接飞盘功能。
>定义Swimmable接口,在接口中定义swim( )方法,表示游泳功能。
>定义抽象类Pet,包括宠物名称(mane),健康值(health),和主人亲密度(love)属性。并提供抽象方法print( ),用来输出宠物信息。
>定义狗类Dog,继承Pet类,实现Eatable和FlyingDiscCatchable接口,并重写或实现各个方法。
>定义企鹅类Penguin,继承Pet类,实现Eatable和Swimmble接口,并重写或实现各个方法。
>编写测试类,实现狗吃饭,企鹅游泳和狗玩飞盘游戏的功能,并输出企鹅信息。
package kehouzuoye2; public interface Eatable { void eat();//吃饭功能 }package kehouzuoye2; public interface FlyingDiscCatchable { void catchingFlyDisc();//接飞盘功能 }package kehouzuoye2; public interface Swimmable { void swim();//游泳功能 }package kehouzuoye2; public abstract class Pet { private String name;//昵称 private int health;//健康值 private int love;//亲密度 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getHealth() { return health; } public void setHealth(int health) { this.health = health; } public int getLove() { return love; } public void setLove(int love) { this.love = love; } public abstract void print(); } package kehouzuoye2; public class Dog extends Pet implements Eatable, FlyingDiscCatchable { @Override public void catchingFlyDisc() { //接飞盘 System.out.println("狗狗"+super.getName()+"正在玩接飞盘!"); } @Override public void eat() { // 吃饭 System.out.println("狗狗"+super.getName()+"吃饱啦!"); } @Override public void print() { // 输出信息 System.out.println("宠物自白:"); System.out.println("我是一只狗"+"\n我的名字是:"+super.getName()+"\n我和主人的亲密度是:" +super.getLove()+"我的健康值是"+super.getHealth()); eat(); catchingFlyDisc(); } } package kehouzuoye2; public class Penguin extends Pet implements Eatable, Swimmable { @Override public void swim() { // 游泳 System.out.println("企鹅"+super.getName()+"正在游泳!"); } @Override public void eat() { // 吃饭 System.out.println("企鹅"+super.getName()+"吃饱啦!"); } @Override public void print() { // 输出信息 System.out.println("宠物自白:"); System.out.println("我是一只企鹅"+"\n我的名字是:"+super.getName()+"\n我和主人的亲密度是:" +super.getLove()+"我的健康值是"+super.getHealth()); eat(); swim(); } } package kehouzuoye2; public class Test { public static void main(String[] args) { Pet p = new Dog(); p.setName("旺财");//调用set方法赋值 p.setHealth(100); p.setLove(99); p.print();//调用输出信息方法 System.out.println(); Pet p1 = new Penguin(); p1.setName("楠楠");//调用set方法赋值 p1.setHealth(100); p1.setLove(78); p1.print();//调用输出信息方法 } }