【Java】接口

Java中没有多继承,但却可以实现多接口。


基本概念

  • 接口使用interface关键字
  • 接口命名前加字母I来区分接口和普通类
  • 子类可以实现多个接口使用关键字implements
  • 一般使用接口名+Impl来命名子类
  • 一般一个类既可以当抽象类也可以当接口的时候,优先使用接口
  • 子类的实例化对象可以向上转型为任意接口类型

接口使用权限

接口中只有public权限

  • 接口中定义的变量,实际就是全局常量,默认public static final
  • 接口中定义的方法默认为public abstract

子类可以先使用extends继承一个抽象类,后使用implements实现多个接口。

抽象类可以使用implements实现多个接口,但是接口不能extends抽象类。

抽象类实现接口可以选择性的覆写接口中的抽象方法。

一个接口可以使用extends继承多个父接口。接口不能继承类。


接口定义加强

接口只是方法的声明,没有方法的实现。一旦接口中添加新的抽象方法时,所有的实现类都需要覆写该方法。所以在JDK1.8后进行了改进。

使用default定义普通方法

interface Message{
    void chat();
    default void transportFile(){
        System.out.println("暂不支持");
    }
}

class QQMessage implements Message {
    @Override
    public void chat() {
        System.out.println("QQ聊天");
    }

    @Override
    public void transportFile() {
        System.out.println("QQ传文件");
    }
}

class MSNMessage implements Message {
    @Override
    public void chat() {
        System.out.println("MSN聊天");
    }
}

public class Hello {
    public static void main(String[] args) {
        Message qq=new QQMessage();  //向上转型
        qq.chat();
        qq.transportFile();

        Message msn=new MSNMessage();  //向上转型
        msn.chat();
        msn.transportFile();
    }
}

定义staic静态方法

interface Message{
    void chat();
    static void transportFile(){
        System.out.println("暂不支持");
    }
}

public class Hello {
    public static void main(String[] args) {
        //Message.chat();即使接口里有没有实现的方法也可以通过类名直接调用
        Message.transportFile();
    }
}
posted @ 2020-01-31 18:48  LampsAsarum  阅读(86)  评论(0编辑  收藏  举报