接口01-Java

接口-Java

  • 一、引入(快速入门案例)
  • 二、接口介绍
    • 1、概念
    • 2、语法
  • 三、应用场景
  • 四、接口使用注意事项
  • 五、练习
    • 题1

一、引入(快速入门案例)

usb插槽就是现实中的接口。
你可以把手机、相机、u盘都插在usb插槽上,而不用担心那个插槽是专门插哪个的,原因是做usb插槽的厂家和做各种设备的厂家都遵守了统一的规定包括尺寸,排线等等。

【实现】
设备通过接口, 接入电脑开始工作。

1) 一个接口 UsbInterface:人为规定了一系列的方法,类似现实生活中的USB规范、参数 大小
(2) 两个设备 Phone, Camera:相机实现接口,本质就是把接口的方法完成
(3) 一台电脑 Computer:通过接口调用方法

1、接口
在这里插入图片描述

	public interface UsbInterface { //接口//规定接口的相关方法public void start();//开始工作public void stop();//停止工作}

2、两个设备

//解读1。即 Phone类需要实现 UsbInterface接口规定/声明的方法
class Phone implements UsbInterface {@Overridepublic void start() {System.out.println("手机开始工作···");}@Overridepublic void stop() {System.out.println("手机结束工作···");}
}//如果想使用接口,就去实现它。
class Camera implements UsbInterface {@Overridepublic void start() {System.out.println("Camera开始工作···");}@Overridepublic void stop() {System.out.println("Camera结束工作···");}
}

3、一台电脑

class Computer {public void work(UsbInterface usbinterface) {usbinterface.start();usbinterface.stop();}
}

4、

    public static void main(String[] args) {//创建手机,相机对象Camera camera = new Camera();Phone phone = new Phone();//创建计算机Computer computer = new Computer();computer.work(camera);//把相机接入到计算机System.out.println("========");computer.work(phone);//把手机接入到计算机}

在这里插入图片描述

二、接口介绍

1、概念

接口就是给出一些没有实现的方法,封装一起,到某个类要使用的时候在根据具体情况把这些方法写出来。

2、语法

	interface 接口名 { //属性//方法}

interface 中的方法只有三种
① 抽象方法,可以不写abstract
② 默认实现方法,需要使用default关键字修饰
③ 静态方法

	class 类名 implements 接口 { 自己的属性;自己的方法;必须实现的接口的抽象方法}implement :实现的意思

小结:

  1. 在Jdk7.0前接口里的所有方法都没有方法体,即都是抽象方法。
  2. Jdk8.0后接口类可以有①静态方法,②默认方法(需要使用default关键字修饰),也就是说接口中可以有方法的具体实现。
public interface AInterface {//-------------------------jdk 7--------------------------//属性public int n1 = 10;//方法public void hi();//在接口中,抽象方法,可以省略abstract关键字//--------------------------------------------------------//在jdk8后,可以有默认实现方法,需要使用default关键字修饰default public void ok() {System.out.println("ok!");}//在jdk8后,可以有静态方法static public void cry(){System.out.println("cry!");}
}

三、应用场景

  1. 说现在要制造战斗机,武装直升机。专家只需把飞机需要的功能/规格定下来即可,然后让别的人具体实现就可。
  2. 说现在有一个项目经理,管理三个程序员,功能开发一个软件,为了控制和管理软件,项目经理可以定义一些接口,然后由程序员具体实现。

在这里插入图片描述
实际要求:3个程序员,编写三个类,分别完成对Mysq,Oracle,DB2数据库的连接connect, close…

  • 接口
//项目经理写的
public interface DBInterface {public void connect();//连接方法public void close();//断开方法
}
  • 不同程序员实现不同数据库的连接、断开
//A程序员
class MySqlDB implements DBInterface {@Overridepublic void connect() {System.out.println("连接MySQL···");}@Overridepublic void close() {System.out.println("断开MySQL···");}
}//B程序员
class OracleDB implements DBInterface {@Overridepublic void connect() {System.out.println("连接Oracle···");}@Overridepublic void close() {System.out.println("断开Oracle···");}
}
  • main
public class Interface03 {public static void main(String[] args) {MySqlDB mySqlDB = new MySqlDB();test1(mySqlDB);System.out.println("=========");OracleDB oracleDB = new OracleDB();test1(oracleDB);}public static void test1(DBInterface db) {db.connect();db.close();}
}

四、接口使用注意事项

  1. 接口不能被实例化。
  2. 接口中所有的方法是public方法,接口中抽象方法,可以不用abstract修饰。
	void aaa();实际上是 abstract public void aaa();
  1. 一个普通类实现接口,就必须将该接口的所有方法都实现。
    IDEA中的快捷键-快速查看有哪些需要实现。
    鼠标光标移动到红色波浪线处,然后 ALT+ENTER。

在这里插入图片描述

  1. 抽象类实现接口,可以不用实现接口的方法。
//接口
public interface DBInterface {public void connect();//连接方法public void close();//断开方法
}//抽象类
abstract class Sqldb implements DBInterface{这样不会报错。
}
  1. 一个类同时可以实现多个接口。[举例a.见后文]
    和继承区分:继承是单一继承。
  2. 接口中的属性,只能是final的,而且是public static final修饰符。[举例b.见后文]
    比如:
	int a=1;实际上是 public static final int a=1; (必须初始化)
  1. 接口中属性的访问形式:接口名.属性名。
  2. 接口不能继承其它的类,但是可以继承多个别的接口。[举例c.]
	interface A extends B,C {}
  1. 接口的修饰符只能是public和默认,这点和类的修饰符是一样的。

  • 举例
  • a.一个类同时可以实现多个接口
interface IB {void hi(); //实际上是 abstract public void hi();
}
interface IC {void hello();
}class Pig implements IB,IC {@Overridepublic void hi() {}@Overridepublic void hello() {}
}
  • b.接口中的属性,只能是final的
	interface IB {int n1 = 1;}实际上是 public static final int a=1; (必须初始化)

(1)证明 static:
可以通过一个【”类名“/”接口名“ .属性访问】,就是静态的含义。

	 public static void main(String[] args) {System.out.println(IB.n1);//说明n1是static}

(2)证明 final:
在这里插入图片描述
(3)证明 public:【反证法】

证明不是protected、private:在这里插入图片描述
证明不是默认:用包外的类调用,如果可以调用,就证明不是默认的。

因为 import 路径不会写,所以暂时没有验证。。。

  • c.接口继承其他接口
interface IB {void hi(); 
}
interface IC {void hello();
}
// 接口继承其他接口
interface ID extends IB,IC {}

五、练习

题1

语法是否正确,如果正确,输出什么?

	interface A{int a=23;}class B implements A{}【main】中:B b=new B();System.out.println(b.a);System.out.println(A.a);System.out.println(B.a);

我的答案:
b.a 错
A.a 对
B.a 错

分析:
① int a=23; 等价于 public static final int a=23;
② class B implements A正确,因为目前的接口A中没有抽象方法。
③ b.a 正确 =>23
④ A.a 静态,23
⑤ B.a 正确 B实现了A,当然可以使用其中的属性。

在这里插入图片描述

本笔记是对韩顺平老师的Java课程做出的梳理。方便本人和观看者进行复习。
课程请见: https://www.bilibili.com/video/BV1fh411y7R8/?spm_id_from=333.999.0.0&vd_source=ceab44fb5c1365a19cb488ab650bab03

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/228722.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解虚拟 DOM:提升前端性能的关键技术

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

【3D程序软件】SideFX与上海道宁一直为设计师提供程序化 3D动画和视觉效果工具,旨在创造高质量的电影效果

Houdini是一个 从头开始构建的程序系统 使艺术家能够自由工作 创建多次迭代 并与同事快速共享工作流程 Houdini FX为 视觉特效艺术家创作故事片 广告或视频游戏 凭借其基于程序节点的工作流程 Houdini FX可让 您更快地创建更多内容 从而缩短时间并 在所有创意任务中…

STM32 ADC转换器、串口输出

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、ADC是什么?二、STM32的ADC2.1 认识STM32 ADC2.2转换方式2.3 为什么要校准?2.4 采样时间计算2.5 触发方式2.6 多通道采集解决方案2.7…

C++学习之路(十)C++ 用Qt5实现一个工具箱(增加一个时间戳转换功能)- 示例代码拆分讲解

上篇文章,我们用 Qt5 实现了在小工具箱中添加了《JSON数据格式化》功能,还是比较实用的。为了继续丰富我们的工具箱,今天我们就再增加一个平时经常用到的功能吧,就是「 时间戳转换 」功能,而且实现点击按钮后文字进行变…

【计算机网络笔记】以太网

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

Leetcode(面试题 08.01.)三步问题

文章目录 前言一、题目分析二、算法原理1.状态表示2.状态转移方程3.初始化4.填表顺序5.返回值是什么 三、代码实现总结 前言 在本文章中,我们将要详细介绍一下Leetcode(面试题 08.01.)三步问题相关的内容 一、题目分析 1.小孩可以上一阶,两阶&#xff…

数据安全建设的六大关键步骤

随着数字化时代的到来,数据安全已经成为企业和社会组织必须面对的重要问题。数据泄露、网络攻击等安全事件频发,给个人隐私、企业利益和国家安全带来了严重威胁。因此,加强数据安全建设已成为刻不容缓的任务。以下是数据安全建设的六大关键步…

Python hashlib库解析:数据安全加密必备指南

更多资料获取 📚 个人网站:ipengtao.com 哈希函数在计算机科学中扮演着重要的角色。它是一种能够将任意长度的数据转换成固定长度的唯一值的算法。Python提供了hashlib库,用于生成哈希摘要,提供了常见的哈希算法,如MD…

【算法】算法题-20231129

这里写目录标题 一、15. 三数之和二、205. 同构字符串三、383. 赎金信 一、15. 三数之和 提示 中等 6.5K 相关企业 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] …

第二十章 -----多线程

20.1 线程简介 计算机完全可以将多种活动同时进行,这种思想在java中称为并发,将并发完成的每一件事情称为线程 线程的特点: 极小的单位 一个进程有很多个线程 线程共享进程的资源 20.2 创建线程 20.2.1 继承Thread类 Thread类是Java.l…

PLC:200smart

PLC:200smart 第十章、数据类型、数据存储1、数据类型1.1、有符号数1.2、有符号数 2、传送指令 第十一章、比较指令、整数、浮点数的运算1、比较指令1、运算指令1.1、浮点数运算1.2、整数运算 第十章、数据类型、数据存储 1、数据类型 数据类型分为两大类 无符号数…

Django RestFramework

安装restframework pip install djangorestframework pip install markdown # Markdown support for the browsable API. pip install django-filter # Filtering support安装其他模块 pip install pillowpip install django-cors-headers建模和迁移数据 drf包含四个…