设计主人给多个宠物喂食,要求通过对象多态性完成主人类喂食方法的灵活调用。
(1)宠物要设计成模板并给出“吃”的抽象方法
(2)设计相应的多个具体动物类(至少两个)为宠物类的子类
(3)设计主人类,在主人类中增加“喂食”的方法,具体喂食的是哪种宠物由具体调用来实现。
(4)增加测试类对程序进行测试。
并且要求:1.抽象类及接口设计要求
2.子类对接口的实现
3.由子类实例化父类对象
4.向下转型的要求及instanceof 运算符
以下是Java程序的实现,实现了上述所有要求:
public abstract class Pet {
private String name;
private int age;
public Pet(String name, int age) {
this.name = name;
this.age = age;
}
public abstract void eat();
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
具体动物类 Cat.java 和 Dog.java,都继承自宠物类:
public class Cat extends Pet {
public Cat(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("猫咪正在吃饭");
}
}
public class Dog extends Pet {
public Dog(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("小狗正在吃饭");
}
}
主人类 Master.java,可以喂食任何宠物:
public class Master {
public void feed(Pet pet) {
System.out.println("主人正在喂食 " + pet.getName());
pet.eat();
}
}
测试类 Test.java,可以实例化主人和多个宠物,并测试喂食功能:
public class Test {
public static void main(String[] args) {
Master master = new Master();
Pet cat = new Cat("小花", 2);
Pet dog = new Dog("小黑", 3);
master.feed(cat);
master.feed(dog);
// 向下转型
if (cat instanceof Cat) {
Cat c = (Cat) cat;
System.out.println(c.getName() + " 是只猫咪");
}
if (dog instanceof Dog) {
Dog d = (Dog) dog;
System.out.println(d.getName() + " 是只小狗");
}
}
}
程序输出:
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo2.com 版权所有 湘ICP备2023021991号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务