接口就像是一台电脑的各种数据接口,如USB,电源等接口,开发时我们也希望使用这种思维去进行相应的程序开发。
    下面我们写一个案例,我们去设置不同的接口,给这些设置不同的功能(不同的抽象方法)。让不同的类来实现这些接口的功能

    创建一个Computer接口

    1. package com.bxw.demo.interface_demo;
    2. // 定义一个电脑接口
    3. public interface Computer {
    4. // 定义一个打开显示屏方法
    5. public void showOn();
    6. // 定义一个关闭显示屏方法
    7. public void showOff();
    8. }

    创建两个类,分别实现computer接口

    1. package com.bxw.demo.interface_demo;
    2. public class USB implements Computer {
    3. @Override
    4. public void showOn() {
    5. System.out.println("USB插入,显示屏打开");
    6. }
    7. @Override
    8. public void showOff() {
    9. System.out.println("USB拔除,显示屏关闭");
    10. }
    11. }
    12. class Power implements Computer{
    13. @Override
    14. public void showOn() {
    15. System.out.println("电源插入,屏幕开启");
    16. }
    17. @Override
    18. public void showOff() {
    19. System.out.println("电源拔除,屏幕关闭");
    20. }
    21. }

    创建一个类,用于管理接口与功能之间的联系,同时作为主程序执行他们

    1. package com.bxw.demo.interface_demo;
    2. public class MainClass {
    3. public static void main(String[] args) {
    4. USB usb = new USB();
    5. Power power = new Power();
    6. mainRun(usb);
    7. mainRun(power);
    8. }
    9. public static void mainRun(Computer c){
    10. c.showOn();
    11. c.showOff();
    12. }
    13. }

    这里总结一下:
    在Computer接口中设置了两个方法,用于实现computer屏幕的关闭和开启
    两个类都实现了computer接口,并且重写了实现功能
    在MainClass中创建一个用于管理接口与实现类的方法,这个方法接收的是一个Conputer类型的参数,之后分别运行接口中定义的方法。
    但是这里需要注意的是,两个类都实现了Computer接口,也就是说,两个类都是Computer类型的,在mian方法中调用mainRun方法时,分别传入两个类的对象,实现的功能会自动识别为两个类中重写的功能方法。
    为了验证接口的实现类的类型是否是Computer,我们可以使用instanceof修饰符来比较,返回的是一个boolean值

    1. System.out.println(usb instanceof Computer);// true
    2. System.out.println(power instanceof Computer); // true