美文网首页
重捡Java(十四)接口

重捡Java(十四)接口

作者: 我很惊讶 | 来源:发表于2020-05-15 10:27 被阅读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();//这样写的话就与调用类的方法几乎没区别,个人不是很喜欢
        }
    }
    
    

    相关文章

      网友评论

          本文标题:重捡Java(十四)接口

          本文链接:https://www.haomeiwen.com/subject/kslonhtx.html