diff --git a/src/w6/Main.java b/src/w6/Main.java index e69de29..6531a33 100644 --- a/src/w6/Main.java +++ b/src/w6/Main.java @@ -0,0 +1,50 @@ +package w6; + +// 游泳接口 +interface Swimmable { + void swim(); +} + +// 抽象动物类 +abstract class Animal { + public abstract void makeSound(); +} + +// 狗:继承Animal + 实现游泳接口 +class Dog extends Animal implements Swimmable { + @Override + public void makeSound() { + System.out.println("小狗汪汪汪叫"); + } + + @Override + public void swim() { + System.out.println("小狗会游泳,正在游泳"); + } +} + +// 猫:只继承Animal,不实现游泳接口 +class Cat extends Animal { + @Override + public void makeSound() { + System.out.println("小猫喵喵喵叫"); + } +} + +// 主类名改成Main!和文件名Main.java完全一致 +public class Main { + public static void main(String[] args) { + // 多态测试:父类引用指向子类对象 + Animal animal1 = new Dog(); + Animal animal2 = new Cat(); + + // 多态调用叫声 + animal1.makeSound(); + animal2.makeSound(); + + // 向下转型调用游泳方法 + if (animal1 instanceof Dog dog) { + dog.swim(); + } + } +}