酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

要求使用多态实现如下需求,假设小狗、小猫和小鸭子被一 位主人领养,主人可以根据其他人的要求任意送出一只宠物,当 送出的动物时,动物可以叫。 (1)编写动物类 Animal 及 cry()方法 (2)编写小狗类 Dog、小猫类 Cat 和小鸭子类 Duck,均继承自动物类 (3)分别在类中重写父类的 cry()方法,实现动物叫声 (4)编写主人类 Host 及控制动物叫的方法 letCry() (5)将 Animal 父类对象作为方法的形参 (6)编写测试类,实现功能

```java // 动物类 Animal class Animal { public void cry() { System.out.println("动物叫"); } } // 小狗类 Dog class Dog extends Animal { @Override public void cry() { System.out.println("汪汪汪"); } } // 小猫类 Cat class Cat extends Animal { @Override public void cry() { System.out.println("喵喵喵"); } } // 小鸭子类 Duck class Duck extends Animal { @Override public void cry() { System.out.println("嘎嘎嘎"); } } // 主人类 Host class Host { public void letCry(Animal animal) { animal.cry(); } } // 测试类 public class Test { public static void main(String[] args) { Host host = new Host(); Animal dog = new Dog(); Animal cat = new Cat(); Animal duck = new Duck(); // 主人让小狗叫 host.letCry(dog); // 主人让小猫叫 host.letCry(cat); // 主人让小鸭子叫 host.letCry(duck); } } ``` 代码解释: 1. Animal类:定义了一个`cry()`方法,表示动物的叫声。 2. Dog类、Cat类、Duck类:分别继承自`Animal`类,并重写了`cry()`方法,实现了各自独特的叫声。 3. Host类:包含一个`letCry()`方法,该方法接受一个`Animal`类型的参数,并调用该参数的`cry()`方法。 4. Test类:创建了`Host`对象和三个不同的动物对象,并通过`Host`对象的`letCry()`方法让不同的动物发出叫声。 需要注意的逻辑点: 1. 多态性:通过将`Animal`类作为`letCry()`方法的参数类型,实现了多态性,使得`Host`类可以处理任何继承自`Animal`类的对象。 2. 方法重写:子类通过重写父类的`cry()`方法,实现了各自独特的叫声,这是多态性的基础。 3. 代码扩展性:如果需要添加新的动物类型,只需创建一个新的类继承`Animal`类并重写`cry()`方法,而不需要修改`Host`类的代码,体现了良好的扩展性。 [2025-03-04 17:10:48 | AI写代码神器 | 519点数解答]

相关提问