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 题意: 思路: 注意到题目的性质:满足条件的路径个数是极少的,因为每个点离路径的距离<1 先考虑一条链,那么直接就选最深那个点作为端点即可 为什么,因为我们需要遍历所有点…...
微信开发者工具 miniprogram_npm 未找到
背景 微信开发者工具中,打开集成了vant-weapp的项目,构建npm时,报错\miniprogram_npm\ 未找到。 问题 微信开发者工具,工具----->构建npm时,提示 message:发生错误 Error: D:\some\path\miniprogram…...
计算机视觉(三)未有深度学习之前
文章目录 图像分割基于阈值、基于边缘基于区域、基于图论 人脸检测Haar-like特征级联分类器 行人检测HOGSVMDPM 图像分割 把图像划分成若干互不相交的区域。经典的数字图像分割算法一般是基于灰度值的两个基本特征之一:不连续性和相似性。 基于阈值、基于边缘 基于…...
二十六、媒体查询2
目录: 媒体查询介绍网页常用分界点 一、媒体查询介绍 媒体特性: width 视口的宽度 height 视口的高度 一般设计的时候,高度不考虑,只考虑宽度 //当视口的宽度是500像素的时候,变颜色media (width: 500px) {body{background-colo…...
具身智能的发展对人类社会的影响有哪些?
具身智能对人类社会影响一、经济产业层面产业重构:催生机器人、智能制造、自动驾驶新产业,重塑生产链条效率跃升:替代重复繁重劳作,工厂、农业、物流产能大幅提升就业结构变化:低端体力岗位缩减,运维、研发…...
LSTM、GRU与注意力机制在股票预测中的性能对比与实战指南
1. 项目概述与核心价值在量化金融和算法交易这个行当里,预测股票价格走势一直是个充满诱惑又极具挑战的“圣杯”问题。传统的技术分析和基本面分析,虽然各有拥趸,但在面对市场的高噪声、非线性和突发性事件时,往往显得力不从心。我…...
基于特征工程的电力系统虚假数据注入攻击检测方案
1. 项目概述与核心挑战在电力系统这个庞大而精密的“交响乐团”中,自动发电控制(AGC)系统扮演着指挥家的角色。它的核心任务是根据电网频率和联络线功率的微小波动,实时调整各发电机的出力,确保整个电网的频率稳定在50…...
为什么选择Espresso?5大优势让快递管理变得前所未有的简单[特殊字符]
为什么选择Espresso?5大优势让快递管理变得前所未有的简单🚀 【免费下载链接】Espresso 🚚 Espresso is an express delivery tracking app designed with Material Design style, built on MVP(Model-View-Presenter) architecture with RxJ…...
谷歌CEO承认Coding落后了
梦瑶 发自 凹非寺量子位 | 公众号 QbitAI谷歌CEO皮查伊这次真没藏着掖着,直接一个真心话大放送了:在Coding这事儿上,我们家Gemini确实有点了落后哈…..(Gemini:怎么这话还从我自家老板嘴里说出来了呢!&…...
DamaiHelper:大麦网演唱会抢票脚本终极指南
DamaiHelper:大麦网演唱会抢票脚本终极指南 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 还在为抢不到心仪演唱会门票而烦恼吗?面对秒光的票源和黄牛的高价,…...
Flutter表单验证完全指南
Flutter表单验证完全指南 引言 表单验证是Web和移动应用中不可或缺的一部分,它确保用户输入的数据符合预期格式。本文将深入探讨Flutter中的表单验证技术和最佳实践。 一、表单验证基础 1.1 使用TextFormField TextFormField(decoration: const InputDecoration(lab…...
3个理由告诉你为什么选择哔哩下载姬:B站视频下载的终极解决方案
3个理由告诉你为什么选择哔哩下载姬:B站视频下载的终极解决方案 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印…...
量子循环神经网络在混沌时序预测中的参数效率与架构对比
1. 项目概述 最近几年,量子机器学习(QML)的热度持续攀升,大家都想看看,用量子计算那套“叠加”和“纠缠”的玩法来处理经典问题,到底能不能带来点惊喜。时序预测,尤其是混沌系统预测,…...
3分钟解锁QQ音乐加密文件:Mac用户必备的免费解密工具指南
3分钟解锁QQ音乐加密文件:Mac用户必备的免费解密工具指南 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默…...
