您好,欢迎来到哗拓教育。
搜索
您的当前位置:首页Java宠物喂食:

Java宠物喂食:

来源:哗拓教育

设计主人给多个宠物喂食,要求通过对象多态性完成主人类喂食方法的灵活调用。
(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;
    }
}
  1. 具体动物类 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("小狗正在吃饭");
    }
}
  1. 主人类 Master.java,可以喂食任何宠物:

public class Master {
    public void feed(Pet pet) {
        System.out.println("主人正在喂食 " + pet.getName());
        pet.eat();
    }
}
  1. 测试类 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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务