重捡Java(十四)接口

2020-05-15  本文已影响0人  我很惊讶

这一部分是前后端分离和实际项目中分工合作的一个重要方法。
当我们去定义一个接口的时候,实际上我们是做了一个约定的方法而不去实现它。此时,对于前端人员来说,他不必关注后台方法的实现,只关注数据就可以,而所有后台人员在编写实现代码之前,都必须要保证自己写的方法符合这个借口,以方便调用。

之前一直搞不懂加入接口怎么就解耦了,调用方法不还是需要通过new一个实现类的对象来调用吗?原来是调用方法出错了。


示意图

我先实现一个接口使用的例子,然后再慢慢学习其他知识

示例情景:计算机有USB接口,接口可以链接鼠标、键盘、存储器,不过键盘的USB方法是“键入事件”,鼠标的方法是“点击事件”,存储器的方法是“存储事件”
好了,下面实现代码:

1、接口USB

public interface USB {
    
    public void write();//约定一个写入方法
    public void read();//约定一个读入方法
    default void readSth(USB usb) {//jdk8开始,接口可以有方法体了,而且不用在子类中实现
        usb.read();
    }
    
}

2、三个实现类

键盘

public class Keyboard implements USB {
    //键盘实现类
    @Override
    public void write() {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void read() {
        // TODO Auto-generated method stub
        System.out.println("键盘写入");
    }

}

鼠标

public class Mouse implements USB {

    @Override
    public void write() {
        // TODO Auto-generated method stub

    }

    @Override
    public void read() {
        // TODO Auto-generated method stub
        System.out.println("鼠标点击");
    }

}

磁盘

public class Disk implements USB {

    @Override
    public void write() {
        // TODO Auto-generated method stub

    }

    @Override
    public void read() {
        // TODO Auto-generated method stub
        System.out.println("磁盘读入");
    }

}

3、使用类电脑

public class Computer {

    //计算机输入了一些东西
    public void readSth(USB u) {//这一句可以看出,接口也是可以当做数据类型的
        u.read();
    }
    public static void main(String[] args) {
        Computer c = new Computer();
        //键盘输入
        Keyboard kb = new Keyboard();
        //鼠标输入
        Mouse mouse = new Mouse();
        //从磁盘读入
        Disk disk = new Disk();
        //而接口作为数据类型与父类一样,一切子类都可以输入了
        c.readSth(kb);
        c.readSth(mouse);
        c.readSth(disk);
        //另一种调用方式
        kb.read();//这样写的话就与调用类的方法几乎没区别,个人不是很喜欢
    }
}

上一篇下一篇

猜你喜欢

热点阅读