• JavaSE-11 接口


    学习要点

    • 接口的定义
    • 接口作为约定
    • 接口作为能力

      

    接口

    为什么使用接口

    需求描述

    要求实现防盗门的功能(防盗门:带锁的门)。

    需求分析

    1. 门有“开”和“关”的功能,锁有“上锁”和“开锁”的功能。
    2. 将门和锁分别定义为抽象类。
    3. 防盗门继承门,再继承锁,能够实现吗?//只支持单继承
    4. Java只支持单继承。
    5. 如何解决这个问题?

    解决方案

    将门定义为抽象类,锁定义为接口。防盗门继承门,实现锁的接口。

     

    接口的定义

    语法结构

    public interface MyInterface {
    
        public void foo();
    
        //其他方法
    
    }
    

      

    接口中的方法都是public abstract方法,没有方法体。

    接口特性

    1. 接口不可以被实例化
    2. 实现类必须实现接口的所有方法
    3. 实现类可以实现多个接口
    4. 接口中的变量都是静态常量

    接口使用场合

    1. 常作为类型使用
    2. 实现Java的“多继承”

    接口的使用

    如何用程序描述USB接口

     

     

    问题分析

    USB接口:本身没有实现任何功能、规定了数据传输的要求、可以被多种USB设备实现。

    使用Java接口实现

     

    编码实现

      

    接口表示一种能力

    能力

    • 做这项工作需要一个程序员(电气工程师、泥瓦匠,木匠……),程序员在这里表示一种能力,而不关心具体是谁。
    • 接口是一种能力,体现在接口的方法上。

    面向接口编程

    我们在设计程序的时候:

    • 关心实现类有何能力,而不关心实现细节。
    • 面向接口的约定而不考虑接口的具体实现

     

    接口作为能力实现防盗门的编程

    问题分析

    防盗门是一个门:防盗门和门是 is a 的关系。

    防盗门有一个锁:防盗门和锁是 has a 的关系。

    锁:上锁和开锁的能力。

    实现过程

     

    上机练习:扩展防盗门,增加门铃功能,门铃可以播放提示音、对出入门的人和物进行拍照存档。

     

     

    理解接口作为一种能力

    接口有比抽象类更好的特性:

    1. 可以被多继承
    2. 设计和实现完全分离
    3. 更自然的使用多态
    4. 更容易搭建程序框架
    5. 更容易更换实现
    6. ……

    接口表示一种约定

    约定

    现实生活中的约定

    我们使用的两相电源插座,规定了

    • 两个接头间的额定电压
    • 两个接头间的距离
    • 接头的形状

    接口是一种约定

    体现在接口的名称和注释上

    • 有些接口只有名称
    • 方法的实现方式通过注释来约定

     面向接口编程

    • 程序设计时面向接口的约定而不考虑具体实现。

    面向接口编程

    案例:开发打印机

    • 墨盒:彩色、黑白
    • 纸张类型:A4、B5
    • 墨盒和纸张都不是打印机厂商提供的
    • 打印机厂商要兼容市场上的墨盒、纸张

     

    分析

    • 墨盒和纸张的规格是一种约定
    • 打印机需要遵守这些约定
    • 用面向接口编程的方式开发
      • 制定墨盒、纸张的约定或标准
      • 打印机厂商使用墨盒、纸张的标准开发打印机
      • 其他厂商按照墨盒、纸张的标准生产墨盒、纸张

    总结

    Java中的接口

    属性全都是全局静态常量

    方法都是全局抽象方法

    无构造方法

    一个类可以实现多个接口,非抽象类实现接口时必须实现接口中的全部方法

    抽象类利于代码复用,接口利于代码维护



    本博客文章未经许可,禁止转载和商业用途!

    如有疑问,请联系: 2083967667@qq.com


  • 相关阅读:
    LabelImg 图像图像标注工具
    周杰伦的2000w个故事
    ROS 订阅图像节点(1)
    ROS 订阅图像节点
    ROS 双目标定
    书籍
    Z30云台PC控制问题
    大疆M600组装和试飞
    M100 X3云台安装
    M100 组装教程
  • 原文地址:https://www.cnblogs.com/rask/p/8253727.html
Copyright © 2020-2023  润新知