接口

1.为什么要有接口

Java中不支持多重继承,只能实现单继承,为了达到多重继承的效果,提供了接口、

另一方面,有时必须从几个类中抽取相同的特征行为,而这些行为不是继承的关系,此时需要接口

例如下面这个图

 

 继承是“是不是”的关系,接口是“能不能”的关系。

2.接口是什么

接口用interface来定义

接口和类是并列的关系

怎么定义接口?

在JDK7及之前: 只能定义全局常量 public static final (但是书写时可以省略)和 抽象方法 public abstract(也可省略不写)

在JDK8以后 ,还可以定义静态方法和默认方法。

 

接口中不能定义构造器! 意味着接口不能实例化

在Java中接口通过让类去实现(implements)的方式来使用:要么实现接口中所有的抽象方法,要么这个类扔是抽象类

一个类可以实现多个接口的功能,规则同上,同时也可以继承一个父类

 

接口的具体实现,体现多态性。具体看下面这个例子

先定义一个USB接口,然后用闪存类实现USB接口的功能。

interface  USB{
    public abstract void open();
    public abstract void stop();
}

class FlashMemory implements USB{

    @Override
    public void open() {
        System.out.println("U盘开始工作");
    }

    @Override
    public void stop() {
        System.out.println("U盘不干了");
    }
}

而后我们定义一个电脑类

class Computer{
    public void transferData(USB usb){
        usb.open();
        System.out.println("传输ing");
        usb.stop();
    }
}

我们知道接口是不能实例化的,那要如何实现transferData的功能呢?

public class InterfaceTest {
    public static void main(String[] args) {
        FlashMemory f1 = new FlashMemory();
        Computer computer = new Computer();
        computer.transferData(f1);
    }
}

就是多态,相当于执行了Usb usb = new Flash();。

 

由于每个可实例化类实现接口中的所有抽象方法,可以接口将认为是一种规范。

 

 

 

posted @ 2022-01-06 16:55  Rook1e  阅读(76)  评论(0)    收藏  举报