You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.3 KiB
56 lines
1.3 KiB
package main.w6;
|
|
|
|
// 1. 抽象动物类
|
|
abstract class Animal {
|
|
// 抽象方法:动物叫声
|
|
public abstract void makeSound();
|
|
}
|
|
|
|
// 2. 游泳接口
|
|
interface Swimmable {
|
|
void swim();
|
|
}
|
|
|
|
// 3. Dog类:继承Animal,实现Swimmable接口
|
|
class Dog extends Animal implements Swimmable {
|
|
@Override
|
|
public void makeSound() {
|
|
System.out.println("小狗汪汪叫~");
|
|
}
|
|
|
|
@Override
|
|
public void swim() {
|
|
System.out.println("小狗会狗刨游泳");
|
|
}
|
|
}
|
|
|
|
// 4. Cat类:仅继承Animal,不实现Swimmable
|
|
class Cat extends Animal {
|
|
@Override
|
|
public void makeSound() {
|
|
System.out.println("小猫喵喵叫~");
|
|
}
|
|
}
|
|
|
|
// 测试类
|
|
public class AnimalTest {
|
|
public static void main(String[] args) {
|
|
// 多态调用:父类引用指向子类对象
|
|
Animal dog = new Dog();
|
|
Animal cat = new Cat();
|
|
|
|
// 调用叫声方法
|
|
System.out.println("=== 动物叫声 ===");
|
|
dog.makeSound();
|
|
cat.makeSound();
|
|
|
|
// 只有实现了Swimmable的对象才能调用swim()
|
|
System.out.println("\n=== 游泳能力 ===");
|
|
if (dog instanceof Swimmable) {
|
|
((Swimmable) dog).swim();
|
|
}
|
|
|
|
// cat没有实现Swimmable,不能调用swim()
|
|
System.out.println("小猫不会游泳");
|
|
}
|
|
}
|