接口


接口

抽象类:包含抽象方法,非抽象

接口:理解为一个纯粹的抽象类

? 接口中定义抽象方法

作为上层的设计需要,设计功能

接口与接口的关系:
接口继承接口 一个接口可以继承多个接口

类与接口关系:
类实现接口 一个类可以实现多个接口

创建animal接口
/*
    interface关键字修饰的是接口
    接口与接口之间可以一对多继承
 */
public interface Animal extends InterFaceA,InterFaceB {
    /*
    接口定义的成员变量是一个常量,默认被public static final 修饰
    public static final int nums= 10;
     */
    int nums= 10;
    String s= "傻狗";

    /*
    jdk8以后接口中声明的抽象方法,默认被public abstract 修饰
    public abstract void eat();
     */
    void eat();
    void sleep();

    /*
    jdk8以后加入静态方法,默认方法
     */
    public static void play(){
        System.out.println("狗玩");
    }
    /*
    默认方法,子类可以重写也可以不重写,或通过子类进行调用
     */
    public default void test(){
        System.out.println("接口中的默认方法");
    }
}
创建InterFaceA接口
public interface InterFaceA {
    void testA();
}

创建InterFaceB接口
public interface InterFaceB {
    void testB();
}

创建InterFaceC接口
public interface InterFaceC {
    void testC();
}

创建dog类
 /*
    当类实现接口时,类要实现接口中所有的方法.
    否则,类必须声明为抽象的类
    一个类实现多个接口
     */
public class Dog extends  Object implements Animal,InterFaceC{

    @Override
    public void eat() {
        System.out.println("狗吃肉");
    }

    @Override
    public void sleep() {
        System.out.println("狗 to bed");
    }

    @Override
    public void testA() {

    }

    @Override
    public void testB() {

    }

    @Override
    public void testc() {

    }
}

创建测试类

public class InterfaceTest {
    public static void main(String[] args) {
        System.out.println(Animal.nums);
        System.out.println(Animal.s);

        Animal dog = new Dog();

        dog.eat();
        dog.sleep();
        dog.test();
        Animal.play();
    }
}

运行结果:

10
傻狗
狗吃肉
狗 to bed
接口中的默认方法
狗玩