面向对象第六章课后习题

1.在第三题的进行功能扩展。
(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();//调用输出信息方法
		
	}

}

猜你喜欢

转载自blog.csdn.net/duanhaifeng55/article/details/80185709