Browse Source

动物叫声系统

main
ZhangYuhan 4 days ago
parent
commit
38c3107efd
  1. 5
      w6/Animal.java
  2. 9
      w6/Cat.java
  3. 15
      w6/Dog.java
  4. 5
      w6/Swimmable.java
  5. 31
      w6/TestAnimal.java
  6. BIN
      w6/运行结果.png

5
w6/Animal.java

@ -0,0 +1,5 @@
// 抽象类:Animal
public abstract class Animal {
// 抽象方法:发出声音,子类必须重写
public abstract void makeSound();
}

9
w6/Cat.java

@ -0,0 +1,9 @@
// Cat类:仅继承Animal,不实现Swimmable
public class Cat extends Animal {
// 重写父类抽象方法:发出叫声
@Override
public void makeSound() {
System.out.println("喵喵喵!");
}
}

15
w6/Dog.java

@ -0,0 +1,15 @@
// Dog类:继承Animal,实现Swimmable接口
public class Dog extends Animal implements Swimmable {
// 重写父类抽象方法:发出叫声
@Override
public void makeSound() {
System.out.println("汪汪汪!");
}
// 实现接口的swim方法
@Override
public void swim() {
System.out.println("小狗在水里游泳~");
}
}

5
w6/Swimmable.java

@ -0,0 +1,5 @@
// 接口:Swimmable(可游泳的能力)
public interface Swimmable {
// 抽象方法:游泳
void swim();
}

31
w6/TestAnimal.java

@ -0,0 +1,31 @@
// 测试类:main方法,测试多态调用
public class TestAnimal {
public static void main(String[] args) {
System.out.println("=== 1. 多态调用Animal父类引用 ===");
// 父类引用指向子类对象(多态核心)
Animal dog = new Dog();
Animal cat = new Cat();
// 多态调用makeSound():运行时自动执行子类的方法
dog.makeSound(); // 输出:汪汪汪!
cat.makeSound(); // 输出:喵喵喵!
System.out.println("\n=== 2. 测试Dog的游泳能力(接口多态) ===");
// 接口引用指向实现类对象(接口多态)
Swimmable swimmableDog = new Dog();
swimmableDog.swim(); // 输出:小狗在水里游泳~
System.out.println("\n=== 3. 类型判断与向下转型(可选拓展) ===");
// 判断Animal对象是否能游泳(instanceof)
if (dog instanceof Swimmable) {
System.out.println("Dog是可游泳的");
// 向下转型为Swimmable,调用swim方法
((Swimmable) dog).swim();
}
if (cat instanceof Swimmable) {
System.out.println("Cat是可游泳的");
} else {
System.out.println("Cat不会游泳");
}
}
}

BIN
w6/运行结果.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

Loading…
Cancel
Save