From 99a50bfa7e4363e748531ee4422635c768d1b91b Mon Sep 17 00:00:00 2001 From: JiangYouhan <3080587852@qq.com> Date: Sun, 19 Apr 2026 21:53:52 +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 | 19 +++++++++++++++++++ w6/AnimalTest.java | 36 ++++++++++++++++++++++++++++++++++++ w6/Cat.java | 13 +++++++++++++ w6/Dog.java | 18 ++++++++++++++++++ w6/Swimmable.java | 5 +++++ 5 files changed, 91 insertions(+) create mode 100644 w6/Animal.java create mode 100644 w6/AnimalTest.java create mode 100644 w6/Cat.java create mode 100644 w6/Dog.java create mode 100644 w6/Swimmable.java diff --git a/w6/Animal.java b/w6/Animal.java new file mode 100644 index 0000000..f6d0aa5 --- /dev/null +++ b/w6/Animal.java @@ -0,0 +1,19 @@ +package com.rental.animal; + +public abstract class Animal { + private String name; + + public Animal(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public abstract void makeSound(); +} \ No newline at end of file diff --git a/w6/AnimalTest.java b/w6/AnimalTest.java new file mode 100644 index 0000000..d2d4efe --- /dev/null +++ b/w6/AnimalTest.java @@ -0,0 +1,36 @@ +package com.rental.animal; + +public class AnimalTest { + public static void main(String[] args) { + System.out.println("===== 多态测试 =====\n"); + + Animal dog = new Dog("旺财"); + Animal cat = new Cat("小白"); + + System.out.println("测试 makeSound 方法(多态调用):"); + dog.makeSound(); + cat.makeSound(); + + System.out.println("\n===== 测试游泳能力 =====\n"); + + if (dog instanceof Swimmable) { + ((Swimmable) dog).swim(); + } + + if (cat instanceof Swimmable) { + ((Swimmable) cat).swim(); + } else { + System.out.println(cat.getName() + "不会游泳"); + } + + System.out.println("\n===== 动物数组测试 =====\n"); + + Animal[] animals = {new Dog("大黄"), new Cat("小花"), new Dog("黑子")}; + for (Animal animal : animals) { + animal.makeSound(); + if (animal instanceof Swimmable) { + ((Swimmable) animal).swim(); + } + } + } +} \ No newline at end of file diff --git a/w6/Cat.java b/w6/Cat.java new file mode 100644 index 0000000..5dbf31d --- /dev/null +++ b/w6/Cat.java @@ -0,0 +1,13 @@ +package com.rental.animal; + +public class Cat extends Animal { + + public Cat(String name) { + super(name); + } + + @Override + public void makeSound() { + System.out.println(getName() + "喵喵叫"); + } +} \ No newline at end of file diff --git a/w6/Dog.java b/w6/Dog.java new file mode 100644 index 0000000..fc59af4 --- /dev/null +++ b/w6/Dog.java @@ -0,0 +1,18 @@ +package com.rental.animal; + +public class Dog extends Animal implements Swimmable { + + public Dog(String name) { + super(name); + } + + @Override + public void makeSound() { + System.out.println(getName() + "汪汪叫"); + } + + @Override + public void swim() { + System.out.println(getName() + "在游泳"); + } +} \ No newline at end of file diff --git a/w6/Swimmable.java b/w6/Swimmable.java new file mode 100644 index 0000000..6e3089c --- /dev/null +++ b/w6/Swimmable.java @@ -0,0 +1,5 @@ +package com.rental.animal; + +public interface Swimmable { + void swim(); +} \ No newline at end of file