From 043784fe060ac78bad8695180170656880868ba8 Mon Sep 17 00:00:00 2001 From: WangHe <2260378191@qq.com> Date: Fri, 10 Apr 2026 13:59:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20'w6'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- w6/Animal.java | 29 +++++++++++++++++++++++++++++ w6/TestAnimal.java | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 w6/Animal.java create mode 100644 w6/TestAnimal.java diff --git a/w6/Animal.java b/w6/Animal.java new file mode 100644 index 0000000..7192058 --- /dev/null +++ b/w6/Animal.java @@ -0,0 +1,29 @@ +abstract class Animal { + public abstract void makeSound(); +} + +interface Swimmable { + void swim(); +} + +class Dog extends Animal implements Swimmable { + @Override + public void makeSound() { + System.out.println("🐶 汪汪汪!(Dog叫声)"); + } + + @Override + public void swim() { + System.out.println("🐶 狗狗在水中快乐地游泳~"); + } +} + + +class Cat extends Animal { + @Override + public void makeSound() { + System.out.println("🐱 喵喵喵!(Cat叫声)"); + } + +} + diff --git a/w6/TestAnimal.java b/w6/TestAnimal.java new file mode 100644 index 0000000..9ea07b1 --- /dev/null +++ b/w6/TestAnimal.java @@ -0,0 +1,35 @@ +public class TestAnimal { + + public static void animalSound(Animal a) { + a.makeSound(); + } + + + public static void trySwim(Animal a) { + if (a instanceof Swimmable) { + Swimmable s = (Swimmable) a; + s.swim(); + } else { + System.out.println("❌ 这只动物不会游泳!"); + } + } + + public static void main(String[] args) { + + Animal dog = new Dog(); + Animal cat = new Cat(); + + System.out.println("=== 1. 多态调用叫声(抽象类多态) ==="); + animalSound(dog); + animalSound(cat); + + System.out.println("\n=== 2. 多态调用游泳(接口多态) ==="); + trySwim(dog); + trySwim(cat); + + + System.out.println("\n=== 3. 接口引用直接调用 ==="); + Swimmable swimmer = new Dog(); + swimmer.swim(); + } +} \ No newline at end of file