[Java基础]接口

Posted lzzycola

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Java基础]接口相关的知识,希望对你有一定的参考价值。

一.接口的使用

  1.关键字 interface implements

    

interface TestInterface{
    
}
class TestClass implements TestInterface{
    
}

    interface为接口的声明关键字,而implements则为类实现接口的关键字

  2.接口就是用来给实现类增加能力的,给这个类带来一些能力和一些约束,也能增加代码的可读性

二.接口与类的异同

  1.在jdk1.8之后接口除了default方法和final方法后所有的方法都是公开抽象的,内部的变量也是公开的静态常量

  2.一个类能实现多个接口,一个接口能继承多个接口

  3.接口是不能有构造方法和构造块静态块的,它与抽象类一样无法被实例化,但都能声明引用,也能被编译成.class文件

  4.实现接口的类如果不是抽象类则需要重写该接口内所有的抽象方法

  5.实现接口和类的继承差不多,都是对一个类进行能力的补充和延展,还有一些特殊的接口如:Serializable里面什么也没有,但可以实现它用来实现一种标记的效果,具体实现可以由instanceof来确定

  6.接口里的方法在实现类内重写时规则和子父类内发生的重写一样,唯一不同的可能就是接口内的方法访问修饰符都是public的

三.接口的多态

  1.因为接口和抽象类一样能被声明引用,所以接口和继承类一样都可以实现多态的使用:

    

TestInterface test = new TestInterfaceImpl();

  这种与父类子类的多态一致,test指向的是实现类的实例,而且这个引用只能调用被重写的接口方法,属性,无法调用实现类内其他特有的属性方法

四.接口匿名内部类的使用

  1.常见的如:Thread的接口Runnable:

  

class Test {
    public static void main(String[] args) {
        Thread thread = new Thread(new Runnable() {
            public void run() {
                System.out.println("我跑起来了");
            }
        });
        thread.start();
    }
}

    这是在Java8之前比较常用的线程简单定义方法

五.接口的回调

  1.其实回调与接口的多态和接口匿名内部类的使用都差不多,如下方的Computer类的例子:

interface Usb{        //接口Usb的定义
    void server();
}
class ComputerA{      //使用匿名内部类
    
    public static void main(String[] args) {
        Usb usb = new Usb() {
            public void server() {
                System.out.println("鼠标的接入...");
            }
        };
    }
}
class ComputerB{      //使用接口的多态
    Usb usb;
    public void use() {  //该方法是在外部定义了Usb接口的实现类后使用的方法,给Usb的引用usb指向一个实现类的实例,然后再通过这个use()方法调用这个引用指向的实例内的重写方法
        if(usb != null) {
            usb.server();
        }
    }
}

 

以上是关于[Java基础]接口的主要内容,如果未能解决你的问题,请参考以下文章

java 代码片段

Java 8 新特性总结

Java语言基础之方法的设计

JSP基础

ajax与 axios的基础讲解(附代码及接口)

从父片段到选项卡片段的接口侦听器不起作用