接口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.mzph.cn/news/180971.shtml

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

相关文章

解决git action发布失败报错:Error: Resource not accessible by integration

现象: 网上说的解决方法都是什么到github个人中心setting里面的action设置里面去找。 可这玩意根本就没有! 正确解决办法: 在你的仓库页面,注意是仓库页面的setting里面: Actions> General>Workflow permisss…

苹果手机如何格式化?五个步骤快速掌握!

如果手机出现异常情况,例如运行缓慢、频繁崩溃,又或者想将手机出售、转让给他人,那么将手机格式化可以有助于解决问题。苹果手机如何格式化?本文将为您介绍解决方法,只需要五个步骤就能搞定,帮助您快速掌握…

【新手解答5】深入探索 C 语言:宏中的文本、标识符和字符串 + 递归运算、条件语句、循环 + `switch-case` 与多项条件和枚举的差别

C语言的相关问题解答 写在最前面问题1编程中的一般概念1. 文本2. 标识符3. 字符串 宏中的文本、标识符和字符串例子规范 问题二的笔记梳理递归运算条件语句循环中断(提前退出)、继续循环break 语句(补充)continue 语句&#xff08…

天软高频时序数据仓库

1天软高频时序数仓方案架构 天软高频时序数据仓库是深圳天软科技开发有限公司专为金融用户提供的专业高频行情数据处理方案,集数据接入、检查、处理、存储、查询、订阅、计算于一体。 方案支持各类系统的实时行情、非实时行情接入;还支持压缩存储、分布式…

使用 DMA 在 FPGA 中的 HDL 和嵌入式 C 之间传输数据

使用 DMA 在 FPGA 中的 HDL 和嵌入式 C 之间传输数据 该项目介绍了如何在 PL 中的 HDL 与 FPGA 中的处理器上运行的嵌入式 C 之间传输数据的基本结构。 介绍 鉴于机器学习和人工智能等应用的 FPGA 设计中硬件加速的兴起,现在是剥开几层“云雾”并讨论 HDL 之间来回传…

xv6 内核空间共享

首发公号:Rand_cs 共享内核空间 我们常说,每个进程都有自己的虚拟地址空间,但其中内核部分是共享的。 这就有个问题,如何共享的? 系统启动时创建了一张内核页表,里面记录着内核地址空间与物理地址空间的…

Peter算法小课堂—高精度减法

给大家看个小视频高精度减法_哔哩哔哩_bilibili 基本思想 计算机模拟人类做竖式计算,从而得到正确答案 大家还记得小学时学的“减法竖式”吗?是不是这样 x-y问题 函数总览: 1.converts() 字符串转为高精度大数 2.le() 判断大小 3.sub() …

【技术干货】宇视IPC音频问题解决步骤

近期技术人员从宇视官网下载sdk进行二次开发时,在启动实时直播,并通过回调函数拿到流数据,发现没有音频流数据。 通过下面的数据发现,codeType此字段一直是28,代表的是H.264数据,但未没发现有音频的数据包…

【C++】define宏定义

define宏定义 define是C语言中的一个宏定义命令&#xff0c;它用来将一个标识符定义为一个字符串&#xff0c;该标识符被称为宏名&#xff0c;被定义的字符串称为替换文本&#xff1b; define <宏名> (<参数表>) <宏体>操作符 # &#xff1a;可将参数转化为…

什么是Geo Trust OV证书

一、GeoTrust OV证书的介绍 GeoTrust OV证书是由GeoTrust公司提供的SSL证书&#xff0c;它是一种支持OpenSSL的数字证书&#xff0c;具有更高的安全性和可信度。GeoTrust是全球领先的网络安全解决方案提供商&#xff0c;为各类用户提供SSL证书和信任管理服务。GeoTrust OV证书…

如何使用ArcGIS实现生态廊道模拟

生态廊道是指一种连接不同生态系统的走廊或通道&#xff0c;其建立有助于解决人类活动对野生动植物栖息地破碎化和隔离化的问题&#xff0c;提高生物多样性&#xff0c;减轻生态系统的压力。在城市化和农业开发不断扩张的背景下&#xff0c;生态廊道对于野生动植物的生存和繁衍…

重生之我是一名程序员 44 ——字符串函数(3)

哈喽啊大家晚上好&#xff01;迄今为止我已近给大家介绍了2个字符串函数&#xff0c;今天呢再给大家带来一个字符串函数——strcmp函数。 首先呢还是先带大家认识一下它。strcmp函数是C语言中的字符串函数之一&#xff0c;用于比较两个字符串是否相等。 该函数原型为&#xf…

mysql中的锁及其作用

在MySQL中&#xff0c;锁是用于控制对数据库对象的并发访问的一种机制。锁可以防止多个事务同时对同一数据进行修改或删除&#xff0c;以确保数据的完整性和一致性。 MySQL中的锁有以下几种类型&#xff1a; 共享锁&#xff08;Shared Lock&#xff09;&#xff1a;也称为读锁&…

短视频运营常用的ChatGPT通用提示词模板

短视频定位和策划&#xff1a;请帮助我明确短视频的定位和策划&#xff0c;包括目标受众、主题、风格、内容等方面的内容&#xff0c;以便我能够更好地制定短视频运营策略。 短视频制作&#xff1a;请帮助我制作高质量的短视频&#xff0c;包括脚本编写、拍摄、剪辑、特效等方…

Hive安装与配置

你需要掌握&#xff1a; 1.Hive的基本安装&#xff1b; 2.Mysql的安装与设置&#xff1b; 3.Hive 的配置。 注意&#xff1a;Hive的安装与配置建立在Hadoop已安装配置好的情况下。 hadopp安装与配置 Hive 的基本安装 从 官网 下载Hive二进制包&#xff0c;下载好放在/op…

万人拼团团购小程序源码系统+拼团设置+拼团管理 附带完整的搭建教程

随着互联网的快速发展&#xff0c;电子商务和社交电商的兴起&#xff0c;团购作为一种高效的营销策略和消费方式&#xff0c;受到了广大消费者的热烈欢迎。在此背景下&#xff0c;我们开发了一款基于微信小程序的万人拼团团购系统&#xff0c;旨在为用户提供一种更加便捷、高效…

python爬虫进阶教程之如何正确的使用cookie

文章目录 前言一、获取cookie二、程序实现三、动态获取cookie四、其他关于Python爬虫技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Pytho…

lxml 总结

xm 和 lxml库 哪个更好用点 1. 性能&#xff1a; lxml 通常比 xml.etree.ElementTree 更快。lxml 使用了 C 编写的底层解析器&#xff0c;因此在处理大型 XML 文档时可能更高效。 如果性能对你的应用很重要&#xff0c;特别是在处理大型 XML 文件时&#xff0c;选择 lxml 可能…

TrueLicense实现授权管理

1、生成前准备 在生成授权文件前&#xff0c;首先需要密钥对插入&#xff1a;密钥对分为公钥与私钥&#xff0c;私钥需要本地储存不泄露&#xff0c;公钥需要对外提供&#xff1b;私钥内部包含证书&#xff0c;对于授权文件进行数字签名&#xff0c;相当于加密的步骤&#xff0…

这款高性能分布式ID生成器,现在是你的了~

这是DDD&微服务系列的第17篇&#xff0c;欢迎持续关注~ 概述 在软件开发过程中&#xff0c;我们经常会遇到需要生成全局唯一流水号的场景&#xff0c;例如各种流水号和分库分表的分布式主键ID。特别是在使用MySQL数据库时&#xff0c;除了要求流水号具有“全局唯一”性外&…