当前位置: 首页 > news >正文

接口与实现-常用实用类-Java

接口与实现

接口

使用关键字interface来定义一个接口,接口的定义分为接口声明和接口体,例如:
interface Com{

.......

}

接口声明

interface 接口的名字

接口体

接口体中的抽象方法和常量

接口体中所有抽象方法的访问权限一定都是public,而且允许省略抽象方法的public和abstract修饰符,接口体中所有static常量的访问权限一定都是public,而且允许省略public,final和static修饰符,因此,接口体中不会有变量

interface Com{public static final int MAX=100;    //等价写法public abstract void add();     //等价写法,void add();public abstract float sum(float x,float y); //等价写法,float sum(float x,float y);
}

接口体中的default实例方法

从JDK8版本开始,允许使用default关键字、在接口体中定义称作default的实例方法(不可以定义defult的static方法),default的实例方法和通常的实例方法相比就是使用关键字defult修饰的带方法体的实例方法。default实例方法的访问权限必须是public(允许省略public修饰符)

interface Com{public static final int MAX=100;    //等价写法public abstract void add();     //等价写法,void add();public abstract float sum(float x,float y); //等价写法,float sum(float x,float y);public default int max(int a,int b){return a>b?a:b;}
}

注:不可以省略default关键字,因为在接口体中不允许定义通常的带方法体的public实例方法

接口体中的static方法

interface Com{public static final int MAX=100;    //等价写法public abstract void add();     //等价写法,void add();public abstract float sum(float x,float y); //等价写法,float sum(float x,float y);public default int max(int a,int b){return a>b?a:b;}public static void f(){System.out.println("注意是从JDK SE8开始的");}
}

接口回调

接口声明的变量称作接口变量,接口属于引用型变量,在接口变量中可以存放实现该接口的类的实例的引用,即存放对象的引用

在Java中,接口回调是一种设计模式,允许一个接口在实现该接口的对象上调用方法。这通常用于实现事件监听器或观察者模式,其中对象需要在特定事件发生时被通知。通过回调接口,对象可以注册一个回调,然后在需要时被调用。

// 定义一个回调接口
interface Callback {void onCompletion(String result);
}// 创建一个任务类,用于执行操作并在完成时回调
class Task {private Callback callback;public Task(Callback callback) {this.callback = callback;}public void execute() {// 模拟任务执行过程String result = "任务执行完成";// 任务完成后回调if (callback != null) {callback.onCompletion(result);}}
}// 实现回调接口的类
class MyCallback implements Callback {@Overridepublic void onCompletion(String result) {System.out.println("收到任务结果: " + result);}
}public class InterfaceCallbackDemo {public static void main(String[] args) {// 创建一个实现了Callback接口的实例MyCallback myCallback = new MyCallback();// 创建任务并传入回调对象Task task = new Task(myCallback);// 执行任务task.execute();}
}

若有侵权,请联系作者

http://www.lryc.cn/news/380466.html

相关文章:

  • 【CSS in Depth 2 精译】1.5 渐进式增强
  • k8s集群master故障恢复笔记
  • 昇思25天学习打卡营第5天|网络构建
  • Python开发日记--手撸加解密小工具(2)
  • 一文看懂TON链
  • (南京观海微电子)——TFT LCD压合技术
  • 神经网络实战1-Sequential
  • Java中如何优化数据库查询性能?
  • 从0开发一个Chrome插件:用户反馈与更新 Chrome 插件
  • Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接
  • 基于Java作业管理系统设计和实现(源码+LW+调试文档+讲解等)
  • 使用Kafka框架发送和接收消息(Java示例)
  • 高可用电商支付架构设计方案
  • PriorityQueue详解(含动画演示)
  • python 字符串驻留机制
  • express+vue 在线五子棋(一)
  • AI 大模型企业应用实战(06)-初识LangChain
  • JavaScript的学习之旅之初始JS
  • DataStructure.时间和空间复杂度
  • [Spring Boot]Netty-UDP客户端
  • 基础C语言知识串串香11☞宏定义与预处理、函数和函数库
  • Python 3 函数
  • 【Linux详解】冯诺依曼架构 | 操作系统设计 | 斯坦福经典项目Pintos
  • html做一个画热图的软件
  • 软考初级网络管理员__软件单选题
  • 数据库新技术【分布式数据库】
  • 关于运用人工智能帮助自己实现英语能力的有效提升?
  • IPv6知识点整理
  • 数据赋能(127)——体系:数据标准化——概述、关注焦点
  • 【 ARMv8/ARMv9 硬件加速系列 3.5.1 -- SVE 谓词寄存器有多少位?】