• 一文真正学懂java接口


    1.概述

    接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

    接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

    除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

    接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

    接口的声明语法格式如下:

    [可见度] interface 接口名称 [extends 其他的接口名] {
            // 声明变量
            // 抽象方法
    }
    
    • 1
    • 2
    • 3
    • 4

    类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。

    实现一个接口的语法,可以使用这个公式:

    ...implements 接口名称[, 其他接口名称, 其他接口名称..., ...] ...
    
    • 1

    2.接口使用

    首先,定义一个模拟usb的接口文件:

    /**
     * 接口
     */
    public interface UsbInterface {
        // 规定接口的相关方法,接口规范
        // 接口中定义抽象方法可以省略abstract关键字
        public void start();
        public void stop();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    接着,模拟两个具体的实例,手机和相机:

    /**
     * 实现手机📱接口
     */
    public class Phone implements UsbInterface{
        @Override
        public void start() {
            System.out.println("📱开始连接...");
        }
    
        @Override
        public void stop() {
            System.out.println("📱中断连接...");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    /**
     * 实现相机📷接口
     */
    public class Camera implements UsbInterface{
        @Override
        public void start() {
            System.out.println("📷开始连接...");
        }
    
        @Override
        public void stop() {
            System.out.println("📷中断连接...");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    实现一个计算机类,模拟手机和相机使用计算机的usb接口:

    /**
     * 开始工作
     */
    public class Computer {
        public void work(UsbInterface usbInterface) {
            // 通过接口调用方法
            // 这里可以体现多态思想
            usbInterface.start();
            usbInterface.stop();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3.接口注意事项

    接口可以有自己的属性和方法,接口的方法需要使用default或者static进行修饰:(接口的方法只能在jdk8之后进行使用)

    public int n = 521;
    default public void show() {
        System.out.println("我是接口的方法");
    }
    public static void hi() {
        System.out.println("你好啊");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    接口在定义实现规则方面具有先天的优势,接口编程可以大大提高软件开发的质量和规范🎈

    接口不能被实例化!

    接口中所有的方法都是public方法🐱‍👓,所以在进行接口抽象方法定义时,无需声明abstractpubilc

    抽象类可以不用实现接口中的抽象方法😁

    一个类可以同时实现多个接口,它同时需要重写所有接口的所有抽象方法

    接口中所有的属性都是默认public static final修饰,这很重要

    一个接口不能继承其他的类,但是可以继承其他的接口(接口和接口继承,类和接口是实现关系)

    接口可以使用的修饰符和类一样,为public或者默认

    接口和继承的区别:当子类继承父类就自动拥有父类的功能,如果子类需要扩展功能,可以通过实现接口的方式进行扩展🎁实现接口是对java单继承机制的一种补充


    4.接口多态传递机制

    实例:

    /**
     * 接口的多态传递机制
     */
    interface TextA {}
    interface TextB extends TextA {}
    class Teacher implements TextB {}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    测试类:

    // 接口的多态传递机制
    // 接口类型的变量可以指向实现了该接口的类的对象实例
    TextB textB = new Teacher();
    // 如果TextB继承了TextA接口,而Teacher实现了TextB接口
    // 那么实际上相当于Teacher类也实现了TextA接口
    TextA textA = new Teacher();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    莫道谗言如浪深,莫言迁客似沙沉。 千淘万漉虽辛苦,吹尽狂沙始到金🚀

  • 相关阅读:
    微型微控制器托管双直流/直流升压转换器
    如何在自动化测试中使用MitmProxy获取数据返回?
    【CKA考试笔记】二十、升级k8s
    数据结构学习笔记(第二章线性表)
    mysql事故复盘: 单行字节最大阈值65535字节(原创)
    edge浏览器第三方插件网站
    C语言——自定义数据类型(结构体内存对齐)
    个人博客项目测试报告
    nodejs安装部署运行vue前端项目
    【QT深入理解】QT中的几种常用的排序函数
  • 原文地址:https://blog.csdn.net/Gherbirthday0916/article/details/125818693