diff --git a/w6/Animal.java b/w6/Animal.java new file mode 100644 index 0000000..9cb24d2 --- /dev/null +++ b/w6/Animal.java @@ -0,0 +1,6 @@ +package w6; + +public abstract class Animal { + // 抽象方法:声明动物“叫”的行为,不写具体实现 + public abstract void makeSound(); +} \ No newline at end of file diff --git a/w6/Cat.java b/w6/Cat.java new file mode 100644 index 0000000..ffa16b5 --- /dev/null +++ b/w6/Cat.java @@ -0,0 +1,9 @@ +package w6; + +public class Cat extends Animal { + // 重写Animal的抽象方法makeSound() + @Override + public void makeSound() { + System.out.println("喵喵"); + } +} \ No newline at end of file diff --git a/w6/Dog.java b/w6/Dog.java new file mode 100644 index 0000000..ac8d198 --- /dev/null +++ b/w6/Dog.java @@ -0,0 +1,16 @@ +package w6; + +public class Dog extends Animal + implements Swimmable { + // 重写Animal的抽象方法makeSound() + @Override + public void makeSound() { + System.out.println("汪汪"); + } + + // 步骤3实现Swimmable接口后,需重写swim()方法 + @Override + public void swim() { + System.out.println("狗会游泳~"); + } +} diff --git a/w6/Main.java b/w6/Main.java new file mode 100644 index 0000000..ed2929c --- /dev/null +++ b/w6/Main.java @@ -0,0 +1,17 @@ +package w6; + +public class Main { + public static void main(String[] args) { + // 测试1:Animal 引用指向 Dog(多态调用makeSound()) + Animal animalDog = new Dog(); + animalDog.makeSound(); // 输出:汪汪(实际执行Dog的makeSound()) + + // 测试2:Swimmable 引用指向 Dog(多态调用swim()) + Swimmable swimmingDog = new Dog(); + swimmingDog.swim(); // 输出:狗会游泳~(实际执行Dog的swim()) + + // 测试3:Animal 引用指向 Cat(多态调用makeSound()) + Animal animalCat = new Cat(); + animalCat.makeSound(); // 输出:喵喵(实际执行Cat的makeSound()) + } +} diff --git a/w6/Swimmable.java b/w6/Swimmable.java new file mode 100644 index 0000000..3ca3075 --- /dev/null +++ b/w6/Swimmable.java @@ -0,0 +1,5 @@ +package w6; + +public interface Swimmable { + void swim(); +}