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

java接口实现

文章目录

  • java接口实现
  • 接口中成员组成
  • 默认方法
  • 静态方法
  • 私有接口(保证自己的JDK版本大于等于9版本)
  • 类和接口的关系
  • 抽象类与接口之间的区别

java接口实现

1.接口关键字 interface2.接口不能实例化3.类与接口之间的关系是实现关系,通过 implements关键字实现public class 类名 implements 接口名{}4.接口的子类(实现类)要么重写接口中所有的抽象方法要么是抽象类
public interface Inter {public abstract void show();public abstract void method();
}interface Inter2 {public abstract void show2();
}//实现类
class InterImpl extends Object implements Inter , Inter2{@Overridepublic void show() {}@Overridepublic void method() {}@Overridepublic void show2() {}
}

接口中成员组成

1.成员变量:都是常量,默认修饰符 public static final2.构造方法:没有3.成员方法:JDK8版本前:都是抽象方法  默认修饰符 public abstractJDK8版本:增加了 默认方法 和 静态方法JDK9版本:增加了 私有的方法
public class Demo2 {public static void main(String[] args) {System.out.println(InterA.num);}
}interface InterA{public static final int num = 10;public abstract void show();
}

默认方法

	允许在接口中定义非抽象方法,但是需要使用关键字default修饰,这些就是默认方法作用:解决接口的省级问题格式:public default 返回值类型 方法名(参数){...}public default void show(){...}注意事项:1.默认方法不是抽象方法,所以不强制被重写,但是可以被重写,重写的时候去掉default关键字2.public可以省略,default 不能省略3.如果实现了多个接口,多个接口中存在相同的方法声明子类就必须对该方法进行重写
public class Demo {public static void main(String[] args) {InterImpl1 interImpl1 = new InterImpl1();interImpl1.method();}
}interface InterA{public abstract void show();public default void method(){System.out.println("InterA中的默认接口方法...");}
}interface InterB{public abstract void show();public default void method(){System.out.println("InterB中的默认接口方法...");}
}class InterImpl1 implements InterA{@Overridepublic void show() {}
}
class InterImpl2 implements InterA,InterB{@Overridepublic void show() {}@Overridepublic void method() {System.out.println("实现类必须重写相同的方法!");}}

静态方法

	格式:public static 返回值类型 方法名(参数){...}作用:方便使用。注意事项:1.public可以省略,但是static不可以省略。2.调用方式只有一种,只能通过接口名字进行调用
public class Demo {public static void main(String[] args) {InterAImpl interA = new InterAImpl();InterA.show();}
}interface InterA{public static void show(){System.out.println("接口的方法是静态的......");}
}class InterAImpl implements InterA{}

私有接口(保证自己的JDK版本大于等于9版本)

方法1

interface Inter{public static void start(){System.out.println("start方法执行...");log();}public static  void end(){System.out.println("end方法执行...");log();}private static  void log(){System.out.println("日志记录");}}

方法2

interface Inter1{public default void start(){System.out.println("start方法执行...");log();}public default   void end(){System.out.println("end方法执行...");log();}private  void log(){System.out.println("日志记录");}}

类和接口的关系

· 类和类的关系

继承关系,只能但继承,但是可以多层继承

类和接口的关系

实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

接口和接口的关系

继承关系,可以多继承,也可以单继承。

抽象类与接口之间的区别

1.相同点

抽象类与接口都是作为父类型,都不可以创建对象。

2.不同点

成员的区别成员变量抽象类:可以是常量,也可以是变量。接口:只能是常量,默认修饰符 public static final成员方法抽象类:可以是抽象类,也可以是非抽象方法接口:JDK8之前:只能是抽象方法,默认修饰符 public abstractJDK8版本:增加了默认方法 和 静态方法JDK9版本:增加了私有方法构造方法抽象类:有接口:没有设计理念抽象类可以存放事物的共性内容接口中可以存放事物地规则和事物地扩展。

学的不是技术,更是梦想!!!

相关文章:

java接口实现

文章目录 java接口实现接口中成员组成默认方法静态方法私有接口(保证自己的JDK版本大于等于9版本)类和接口的关系抽象类与接口之间的区别 java接口实现 1.接口关键字 interface2.接口不能实例化3.类与接口之间的关系是实现关系,通过 impleme…...

数据结构入门指南:链表(新手避坑指南)

目录 前言 1.链表 1.1链表的概念 1.2链表的分类 1.2.1单向或双向 1.2.2.带头或者不带头 1.2.33. 循环或者非循环 1.3链表的实现 定义链表 总结 前言 前边我们学习了顺序表,顺序表是数据结构中最简单的一种线性数据结构,今天我们来学习链表&#x…...

SpringBoot第24讲:SpringBoot集成MySQL - MyBatis XML方式

SpringBoot第24讲:SpringBoot集成MySQL - MyBatis XML方式 上文介绍了用JPA方式的集成MySQL数据库,JPA方式在中国以外地区开发而言基本是标配,在国内MyBatis及其延伸框架较为主流。本文是SpringBoot第24讲,主要介绍MyBatis技栈的演…...

linux 查看网卡,网络情况

1,使用nload命令查看 #yum -y install nload 2, 查看eth0网卡网络情况 #nload eth0 Incoming也就是进入网卡的流量,Outgoing,也就是从这块网卡出去的流量,每一部分都有下面几个。 – Curr:当前流量 – Avg…...

在Mac上搭建Gradle环境

在Mac上搭建Gradle环境: 步骤1:下载并安装Java开发工具包(JDK) Gradle运行需要Java开发工具包(JDK)。您可以从Oracle官网下载适合您的操作系统版本的JDK。请按照以下步骤进行操作: 打开浏览器…...

Docker网络与Docker Compose服务编排

docker网络 docker是以镜像一层一层构建的,而基础镜像是linux内核,因此docker之间也需要通讯,那么就需要有自己的网络。就像windows都有自己的内网地址一样,每个docker容器也是有自己的私有地址的。 docker inspect [docker_ID]…...

opencv+ffmpeg环境(ubuntu)搭建全面详解

一.先讲讲opencv和ffmpeg之间的关系 1.1它们之间的联系 我们知道opencv主要是用来做图像处理的,但也包含视频解码的功能,而在视频解码部分的功能opencv是使用了ffmpeg。所以它们都是可以处理图像和视频的编解码,我个人感觉两个的侧重点不一…...

开发基于 LoRaWAN 的设备须知--最大兼容性

最大兼容性配置简介 LoRaWAN开放协议的建立前提是每个制造的设备都可以被唯一且安全地识别。配置是创建唯一标识和相应秘密的过程。虽然配置过程是常规的,但存在一些可能并不明显的陷阱。本章尝试描述配置基于 LoRa 的设备的一些最佳实践。 配置概念 基于 LoRa 的设备配置与银…...

一、SpringBoot基础[日志]

一、日志 解释:SpringBoot使用logback作为默认的日志框架,其中还可以导入log4j2等优秀的日志框架 1.修改日志内容 修改整个日志格式:logging.pattern.console%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{15} 你好 %msg%n %d{yyy…...

libuv库学习笔记-networking

Networking 在 libuv 中,网络编程与直接使用 BSD socket 区别不大,有些地方还更简单,概念保持不变的同时,libuv 上所有接口都是非阻塞的。它还提供了很多工具函数,抽象了恼人、啰嗦的底层任务,如使用 BSD …...

C++多线程编程(第三章 案例1,使用互斥锁+ list模拟线程通信)

主线程和子线程进行list通信,要用到互斥锁,避免同时操作 1、封装线程基类XThread控制线程启动和停止; 2、模拟消息服务器线程,接收字符串消息,并模拟处理; 3、通过Unique_lock和mutex互斥方位list 消息队列…...

IOS UICollectionView 设置cell大小不生效问题

代码设置flowLayout.itemSize 单元格并没有改变布局大小, 解决办法如下图:把View flow layout 的estimate size 设置为None,上面设置的itemSize 生效了。...

浅谈3D隐式表示(SDF,Occupancy field,NeRF)

本篇文章介绍了符号距离函数Signed Distance Funciton(SDF),占用场Occupancy Field,神经辐射场Neural Radiance Field(NeRF)的概念、联系与区别。 显式表示与隐式表示 三维空间的表示形式可以分为显式和隐式。 比较常用的显式表…...

软件测试技能大赛任务二单元测试试题

任务二 单元测试 执行代码测试 本部分按照要求,执行单元测试,编写java应用程序,按照要求的覆盖方法设计测试数据,使用JUnit框架编写测试类对程序代码进行测试,对测试执行结果进行截图,将相关代码和相关截…...

MybatisPlus拓展篇

文章目录 逻辑删除通用枚举字段类型处理器自动填充功能防全表更新与删除插件MybatisX快速开发插件插件安装逆向工程常见需求代码生成 乐观锁问题引入乐观锁的使用效果测试 代码生成器执行SQL分析打印多数据源 逻辑删除 逻辑删除的操作就是增加一个字段表示这个数据的状态&…...

设置k8s中节点node的ROLES值,K8S集群怎么修改node1的集群ROLES

设置k8s中节点node的ROLES值 1.查看集群 [rootk8s-master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane,master 54d v1.23.8 k8s-node1 Ready <none> 54d v1.…...

【*1900 图论】CF1328 E

Problem - E - Codeforces 题意&#xff1a; 思路&#xff1a; 注意到题目的性质&#xff1a;满足条件的路径个数是极少的&#xff0c;因为每个点离路径的距离<1 先考虑一条链&#xff0c;那么直接就选最深那个点作为端点即可 为什么&#xff0c;因为我们需要遍历所有点…...

微信开发者工具 miniprogram_npm 未找到

背景 微信开发者工具中&#xff0c;打开集成了vant-weapp的项目&#xff0c;构建npm时&#xff0c;报错\miniprogram_npm\ 未找到。 问题 微信开发者工具&#xff0c;工具----->构建npm时&#xff0c;提示 message&#xff1a;发生错误 Error: D:\some\path\miniprogram…...

计算机视觉(三)未有深度学习之前

文章目录 图像分割基于阈值、基于边缘基于区域、基于图论 人脸检测Haar-like特征级联分类器 行人检测HOGSVMDPM 图像分割 把图像划分成若干互不相交的区域。经典的数字图像分割算法一般是基于灰度值的两个基本特征之一&#xff1a;不连续性和相似性。 基于阈值、基于边缘 基于…...

二十六、媒体查询2

目录&#xff1a; 媒体查询介绍网页常用分界点 一、媒体查询介绍 媒体特性&#xff1a; width 视口的宽度 height 视口的高度 一般设计的时候&#xff0c;高度不考虑&#xff0c;只考虑宽度 //当视口的宽度是500像素的时候,变颜色media (width: 500px) {body{background-colo…...

算法审判日:用Git记录定程序员罪孽

一、版本控制的“审判台”在软件质量保障体系中&#xff0c;Git早已超越单纯的版本管理工具&#xff0c;演变为代码行为的“司法档案库”。每一次git commit都是程序员在数字法庭上的宣誓证词&#xff0c;而git blame则成为测试人员追溯缺陷根源的刑侦工具。罪证链条的三重维度…...

MatterGen:深度学习驱动的无机材料设计新范式

MatterGen&#xff1a;深度学习驱动的无机材料设计新范式 【免费下载链接】mattergen Official implementation of MatterGen -- a generative model for inorganic materials design across the periodic table that can be fine-tuned to steer the generation towards a wid…...

ai赋能开发:让快马平台智能生成mpu6050手势识别代码

最近在做一个基于MPU6050传感器的手势识别项目&#xff0c;发现用传统方式开发效率太低&#xff0c;于是尝试了InsCode(快马)平台的AI辅助开发功能。整个过程让我深刻体会到&#xff0c;AI如何改变硬件开发的效率瓶颈。 数据采集模块的智能生成 当我输入"用Arduino持续读取…...

Quartus II 13.1 NCO IP核调用失败?可能是这两个坑你没注意(附详细license配置指南)

Quartus II 13.1 NCO IP核调用深度排障指南&#xff1a;从环境配置到授权管理 1. 环境准备&#xff1a;Java运行时环境的隐形陷阱 在FPGA开发中&#xff0c;数字控制振荡器&#xff08;NCO&#xff09;IP核是实现高精度频率合成的关键组件。然而&#xff0c;当你在Quartus II 1…...

避开Verilog数据转换的坑:ASCII码转16进制时,大小写处理你真的做对了吗?

Verilog字符转换实战&#xff1a;如何正确处理ASCII与十六进制的大小写问题 在数字系统设计中&#xff0c;数据格式转换是最基础却又最容易出错的环节之一。最近在review团队一位新成员的UART通信模块代码时&#xff0c;发现一个典型的"大小写陷阱"——当十六进制数据…...

在Ubuntu 22.04上为Orange Pi 3B编译内核6.6:一份避坑与加速指南

在Ubuntu 22.04上为Orange Pi 3B编译内核6.6&#xff1a;一份避坑与加速指南 1. 环境准备与工具链优化 Orange Pi 3B作为一款基于Rockchip RK3566的开发板&#xff0c;其内核编译过程需要特别注意工具链的选择和环境配置。以下是经过实战验证的优化方案&#xff1a; 必备工具安…...

Python从入门到精通(第14章):迭代器与生成器

开头导语 这是本系列第14章。前面你已经用过很多次迭代器和生成器——for x in data 的背后是什么,map 返回的对象为什么不能下标访问,range 为什么不会占很多内存——这些问题的答案都在本章。通过亲手实现一个迭代器类,你会对 Python 迭代协议有清晰的认识,遇到相关错误…...

MediaPipe农业智能化:10个精准农业与作物监测的创新应用

MediaPipe农业智能化&#xff1a;10个精准农业与作物监测的创新应用 【免费下载链接】mediapipe Cross-platform, customizable ML solutions for live and streaming media. 项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe MediaPipe作为谷歌开源的跨平…...

GLM-5.1 全面支持与 Gemini CLI 集成:HagiCode 的多模型进化之路

GLM-5.1 全面支持与 Gemini CLI 集成&#xff1a;HagiCode 的多模型进化之路 本文介绍了 HagiCode 平台近期的重要更新——智谱 AI GLM-5.1 模型的全面支持&#xff0c;以及 Gemini CLI 作为第十个 Agent CLI 的成功集成。这两项更新进一步强化了平台的多模型能力和多 CLI 生态…...

AI驱动的科研绘图革命:DeTikZify如何终结图表代码的手动时代

AI驱动的科研绘图革命&#xff1a;DeTikZify如何终结图表代码的手动时代 【免费下载链接】DeTikZify Synthesizing Graphics Programs for Scientific Figures and Sketches with TikZ 项目地址: https://gitcode.com/gh_mirrors/de/DeTikZify 当deadline遇上绘图难题&a…...