Java多态实战:主人领养猫狗鸭,一法唤出百声鸣!
```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`类的代码,体现了良好的扩展性。 ######[AI写代码神器 | 519点数解答 | 2025-03-04 17:10:48]
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)405
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)305
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1134
- "Java Code: Uncovering Stock Statistics through CSV File Reading"(字节豆包 | 66点数解答 | 2024-11-13 15:31:04)317
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)414
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)405
- 探秘 ClientMain 类:Java 客户端代码解析(字节豆包 | 41点数解答 | 2024-11-15 18:00:17)248
- 解决 Java 中 HTTP 请求方法名含非法字符异常:示例与注意要点(阿里通义 | 321点数解答 | 2024-12-03 17:34:09)357
- Java:从接口设计到实现,打造输出“are you ok!”的程序实例 (字节豆包 | 176点数解答 | 2025-01-03 09:14:03)231
- ClickHouse 表只读模式错误:原因、解决方案及代码检查示例(DeepSeek | 404点数解答 | 2025-02-11 14:14:17)215
- Java中Map<String, Integer>取值与int比较报错原因及解决方案(字节豆包 | 660点数解答 | 2026-01-29 23:42:16)26
- 解决com.fasterxml.jackson.databind.exc.mismatchedinputexception反序列化错误全攻略 (讯飞星火 | 256点数解答 | 2024-05-24 18:00:29)353