接口01-Java

news2024/9/29 17:22:50

接口-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 {
    @Override
    public void start() {
        System.out.println("手机开始工作···");
    }

    @Override
    public void stop() {
        System.out.println("手机结束工作···");
    }
}

//如果想使用接口,就去实现它。
class Camera implements UsbInterface {
    @Override
    public void start() {
        System.out.println("Camera开始工作···");
    }

    @Override
    public 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 {
    @Override
    public void connect() {
        System.out.println("连接MySQL···");
    }

    @Override
    public void close() {
        System.out.println("断开MySQL···");
    }
}

//B程序员
class OracleDB implements DBInterface {
    @Override
    public void connect() {
        System.out.println("连接Oracle···");
    }

    @Override
    public 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 {

    @Override
    public void hi() {

    }

    @Override
    public 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.coloradmin.cn/o/1261960.html

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

相关文章

2023年【危险化学品经营单位安全管理人员】考试总结及危险化学品经营单位安全管理人员模拟试题

题库来源:安全生产模拟考试一点通公众号小程序 2023年【危险化学品经营单位安全管理人员】考试总结及危险化学品经营单位安全管理人员模拟试题,包含危险化学品经营单位安全管理人员考试总结答案和解析及危险化学品经营单位安全管理人员模拟试题练习。安…

.NET6实现破解Modbus poll点表配置文件

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔 !序言 Modbus 协议是工控领域常见…

jq+canvas:实现图片上传+裁剪+保存等功能

效果图 上传图片之前&#xff1a; 上传图片之后&#xff0c;点击放大/缩小后的效果&#xff1a; 裁剪之后的效果&#xff1a; 代码实现如下&#xff1a; 1.html部分 <input type"file" id"fileInput" accept"image/png, image/gif, image/j…

GDOUCTF2023-Reverse WP

文章目录 [GDOUCTF 2023]Check_Your_Luck[GDOUCTF 2023]Tea[GDOUCTF 2023]easy_pyc[GDOUCTF 2023]doublegame[GDOUCTF 2023]L&#xff01;s&#xff01;[GDOUCTF 2023]润&#xff01;附 [GDOUCTF 2023]Check_Your_Luck 根据 if 使用z3约束求解器。 EXP&#xff1a; from z3 i…

OkHttp的配置

一、拦截器 1.添加拦截器的作用&#xff1a; 每次在请求过程中就会回调一次intercept方法 2.拦截器的回调方法里我们可以做那些事情&#xff1a; 当前的请求还没有发给服务器&#xff0c;比如我们在与服务器通信的时候&#xff0c;一个应用中很多地方都会跟服务器发起通信。…

WGS84转CGCS2000操作步骤

1、使用一个转换软件实现不同椭球之间转换七参数的求取。打开坐标转换软件如下&#xff1a; 2、点击设置-地图投影&#xff0c; 如下&#xff1a; 3、设置需要投影到的坐标系&#xff0c;如下&#xff1a; 4、【选择目标坐标系】中选择CGCS2000&#xff0c;如下&#xff1a; 5、…

智能优化算法应用:基于正余弦算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于正余弦算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于正余弦算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.正余弦算法4.实验参数设定5.算法结果6.参考文献7.…

深入Rust的模式匹配与枚举类型

今天&#xff0c;我们将深入探讨Rust语言中的两个强大特性&#xff1a;模式匹配&#xff08;Pattern Matching&#xff09;和枚举类型&#xff08;Enums&#xff09;。这两个特性是Rust提供的核心工具之一&#xff0c;它们在处理多种类型的数据和复杂的逻辑控制中发挥着关键作用…

灰度发布专题---2、Dubbo灰度发布

通过上面描述&#xff0c;我们理解了什么是灰度发布&#xff0c;接下来我们基于Dubbo实现灰度发布。Dubbo的灰度发布常见的方式有版本控制灰度发布、路由灰度发布、基于Apollo实现灰度发布&#xff0c;我们把这每种灰度发布都实现一次。 在学习Dubbo灰度发布之前&#xff0c;我…

2019年11月7日 Go生态洞察:Go Modules v2及更高版本

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

vue3 setup语法糖,常用的几个:defineProps、defineEmits、defineExpose、

vue3和vue2组件之间传参的不同 <script setup> 是在单文件组件 (SFC) 中使用组合式 API 的编译时语法糖。 <script setup> 中的代码会在每次组件实例被创建的时候执行。 任何在 <script setup> 声明的顶层的绑定 (包括变量&#xff0c;函数声明&#xff0…

食材管家,轻松搞定!商户选择生鲜配送系统的原因

随着消费者对生鲜食品的需求不断增加&#xff0c;生鲜市场逐渐成为了电商领域中的热门行业。而生鲜配送系统&#xff0c;则是生鲜电商发展中不可或缺的一部分。本文将探讨商户选择生鲜配送系统的几个原因。 1. 提高效率 生鲜配送系统通过智能化的订单处理、路线规划和配送优化…

2023.11.27 关于 Mybatis 增删改操作

目录 引言 增加用户操作 删除用户操作 修改用户操作 阅读下述文章之间 建议点击下方链接先了解 MyBatis 的创建与使用 MyBatis 的创建与使用 建议点击下方链接先了解 单元测试 的创建与使用 Spring Boot 单元测试的创建与使用 引言 为了方便下文实现增、删、改操作我们先…

java多线程-扩展知识三:乐观锁与悲观锁

1、悲观锁 悲观锁有点像是一位比较悲观&#xff08;也可以说是未雨绸缪&#xff09;的人&#xff0c;总是会假设最坏的情况&#xff0c;避免出现问题。 悲观锁总是假设最坏的情况&#xff0c;认为共享资源每次被访问的时候就会出现问题(比如共享数据被修改)&#xff0c;所以每次…

Appium 2 和 Appium Inspector 环境部署

前言 自 2022 年 1 月 1 日起&#xff0c;Appium 核心团队不再维护 Appium 1.x。官方支持的平台驱动程序的所有最新版本均不兼容 Appium 1.x&#xff0c;需要 Appium 2 才能运行。 Appium 2是一个自动化移动应用程序的开源工具&#xff0c;它带来了以下重要改进&#xff1a;  …

SpringBootWeb案例_01

Web后端开发_04 SpringBootWeb案例_01 原型展示 成品展示 准备工作 需求&环境搭建 需求说明&#xff1a; 完成tlias智能学习辅助系统的部门管理&#xff0c;员工管理 环境搭建 准备数据库表&#xff08;dept、emp&#xff09;创建springboot工程&#xff0c;引入对应…

神经网络核心组件和流程梳理

文章目录 神经网络核心组件和流程梳理组件流程 神经网络核心组件和流程梳理 组件 层&#xff1a;神经网络的基本结构&#xff0c;将输入张量转换为输出张量。模型&#xff1a;由层构成的网络。损失函数&#xff1a;参数学习的目标函数&#xff0c;通过最小化损失函数来学习各…

HCIP-十一、BGP反射器和联盟

十一、BGP反射器和联盟 实验拓扑实验需求及解法1.配置各设备的接口 IP 地址。2.BGPAS 规划3.BGP 反射器4.BGP 联盟5.ebgp 邻居6.bgp 路由汇总 实验拓扑 实验需求及解法 本实验模拟 BGP 综合网络拓扑&#xff0c;完成以下需求&#xff1a; 1.配置各设备的接口 IP 地址。 所有…

这些汽车托运套路你肯定不知道

这些汽车托运套路你肯定不知道 这些套路你肯定不知道.. 学会这三招 汽车托运不怕吃亏 1 看营业执照 首先确定选择的托运公司是否有保障 要求公司出示营业执照和道路运输经营许可证 如果都没有 那就很有可能是无牌照的小作坊!! 这种出问题就肯定没保障 2 保险跟合同 一车一合同 …

安卓系统修图软件(三)

在之前的推送里面&#xff0c;博主分享过两期关于安卓手机的优质修图软件&#xff0c;今天&#xff0c;博主将带来第三期的分享&#xff0c;这也将是该栏目的最后一期。 之前的8款软件&#xff0c;都是以美化、滤镜的风格为主&#xff0c;今天博主带来的这3款&#xff0c;则是以…