package exer1;

public class TestInterface {
    public static void main(String[] args) {
        Duck d=new Duck();
        //把接口的声明设置为static的,然后不用创建对象,直接用类来调用
        TestInterface.test1(d);
        TestInterface.test2(d);
        TestInterface.test3(d);
    }
    
    //创建接口的声明
    public static void test1(Swimming s){//Swimming s=new Duck();实现了接口与具体的实现类之间的多态性
        s.swim();//虚拟方法调用
    }
    public static void test2(Fly f){//Fly f=new Duck();
        f.fly();
    }
    public static void test3(Runner r){//Runner r=new Runner();
        r.run();
    }
}

interface Swimming{
    public abstract void swim();
}
interface Fly{
    public abstract void fly();
}
interface Runner{
    public abstract void run();
}
//这里如果Duck没有都实现上面的 Swimming,Fly,Runner,可以将其设置为abstract
class Duck implements Swimming,Fly,Runner{
    public void swim(){
        System.out.println("鸭子游泳");
    }
    public void fly(){
        System.out.println("鸭子飞");
    }
    public void run(){
        System.out.println("鸭子跑");
    }
}