From 88ea075920b7bf9c48670a18ef8f1eb97a740977 Mon Sep 17 00:00:00 2001 From: LeiJuntao <2606542098@qq.com> Date: Tue, 28 Apr 2026 11:03:02 +0800 Subject: [PATCH] W6 Animal --- W6/AnimalTest.java | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 W6/AnimalTest.java diff --git a/W6/AnimalTest.java b/W6/AnimalTest.java new file mode 100644 index 0000000..afd8104 --- /dev/null +++ b/W6/AnimalTest.java @@ -0,0 +1,57 @@ +// 1. 创建抽象类 Animal +abstract class Animal { + // 包含抽象方法 makeSound() + public abstract void makeSound(); +} + +// 2. 创建接口 Swimmable +interface Swimmable { + // 包含方法 swim() + void swim(); +} + +// 3. 创建 Dog 类继承 Animal 并实现 Swimmable +class Dog extends Animal implements Swimmable { + + @Override + public void makeSound() { + System.out.println("Dog: 汪汪汪 (Woof Woof)"); + } + + @Override + public void swim() { + System.out.println("Dog: 狗狗正在游泳 (Dog is swimming)"); + } +} + +// 4. 创建 Cat 类继承 Animal (不实现 Swimmable) +class Cat extends Animal { + + @Override + public void makeSound() { + System.out.println("Cat: 喵喵喵 (Meow Meow)"); + } +} + +// 5. 主类用于测试 +public class AnimalTest { + public static void main(String[] args) { + // --- 测试 Dog --- + // 多态调用:父类引用指向子类对象 + Animal myDog = new Dog(); + myDog.makeSound(); // 调用 Dog 的叫声 + + // 因为 myDog 是 Animal 类型,无法直接调用 swim,需要向下转型或使用接口引用 + // 这里演示接口多态 + Swimmable swimmingDog = new Dog(); + swimmingDog.swim(); // 调用 Dog 的游泳方法 + + System.out.println("----------------"); + + // --- 测试 Cat --- + Animal myCat = new Cat(); + myCat.makeSound(); // 调用 Cat 的叫声 + + // 注意:Cat 不能转换为 Swimmable,否则会报 ClassCastException + } +}