【Java SE】接口类型
在 Java 中,接口(Interface)是一种引用类型,类似于特殊的抽象类,用于定义一组方法规范,而不提供具体的实现。接口可以包含成员属性,这些属性默认是常量。尽管每个类只能继承一个父类,但它可以实现多个接口。
接口语法
接口使用 interface 关键字定义。接口中可以包含成员属性和成员方法。成员属性通常由 public static final 修饰,定义时这些修饰符可以省略。在 Java 7 之前,接口中的所有方法都是公共抽象方法,没有方法体,并且可以省略 public 和 abstract 修饰符。从 Java 8 开始,接口可以包含静态方法(使用 static 修饰)和默认方法(使用 default 修饰),这意味着接口可以提供具体的方法实现。实现接口的类使用 implements 关键字来实现这些方法。
interface 接口名 {属性;方法(1.抽象方法 2.默认方法 3.静态方法);
}class 类名 implements 接口{类属性;类方法;必须实现的接口的抽象方法;
}
静态方法:在接口中定义的静态方法可以直接通过接口调用,而不需要实现该接口的类实例化。这种静态方法通常用于提供工具功能或帮助方法,便于在不依赖于接口实现的情况下使用。例如,可以在接口中定义一些常用的静态工具函数,方便所有实现类共享。
默认方法:default 方法的一个重要用途是“接口演化”。例如,如果类 A 实现了接口 CI,而后该接口引入了一个新的方法,那么 A 类就需要修改其实现代码来适应这个变化。如果新方法被定义为 default 方法,并提供了默认实现,那么 A 类就无需修改代码。这种方式保证了“源代码兼容”,使得现有的接口实现能够平滑过渡到新版本接口,从而减少了对现有代码的影响。
注意:接口中的方法自动被视为
public,而接口中的属性总是public static final。此外,从Java 9开始,接口中可以定义private方法。private方法可以是静态方法或实例方法。由于私有方法只能用于接口本身,因此私有方法的作用是作为接口中其他方法的辅助方法。
default 方法冲突
当在一个接口中定义一个默认方法,但在超类或另一个接口中也定义了同名的方法时,会引发二义性。为了解决这种冲突,需要遵循以下规则:
- 超类优先:如果超类提供了一个具体的方法,则同名且参数类型相同的默认方法将被覆盖。
- 接口冲突:如果一个接口和另一个接口都提供了同名的方法(无论是否为默认方法),那么在实现类中必须重新实现这个方法,以解决冲突。
接口的使用
// `JDK 8.0`之后
interface InterfaceDemo {public void test1(); // publicdefault void test2() {}; // defaultabstract void test3(); // abstractpublic abstract void test4(); // public abstract// 接口中是可以定义静态方法的// 静态方法必须要有实现// 且这个静态方法只能用public修饰(public可以省去)。public static void main(String[] args){System.out.println("Interface test.");}
}
class ClassDemo implements InterfaceDemo {@Overridepublic void test1() {// TODO Auto-generated method stub}@Overridepublic void test2() {// TODO Auto-generated method stub}@Overridepublic void test3() {// TODO Auto-generated method stub}@Overridepublic void test4() {// TODO Auto-generated method stub}
}
在使用接口的过程中,需要注意:
-
接口不能被实例化
-
接口中抽象方法可以不用
abstract修饰。比如void a();实际上是abstactor void a(); -
一个普通类实现接口,就必须将该接口的所有方法都实现,而抽象类实现接口,可以不用实现接口的方法
-
一个类同时可以实现多个接口
-
接口中属性的访问形式:
接口名.属性名 -
接口中的属性只能是
public static final。比如int a = 1实际为public static final int a = 1(必须初始化) -
一个接口不能继承其他类,但可以继承多个其他接口。比如
interface A extends B,C{} -
接口的修饰符只能是
public和默认,这点和类的修饰符一样
相关文章:
【Java SE】接口类型
在 Java 中,接口(Interface)是一种引用类型,类似于特殊的抽象类,用于定义一组方法规范,而不提供具体的实现。接口可以包含成员属性,这些属性默认是常量。尽管每个类只能继承一个父类,…...
[代码随想录Day10打卡] 理论基础 232.用栈实现队列 225. 用队列实现栈 20. 有效的括号 1047. 删除字符串中的所有相邻重复项
理论基础 队列先入先出。 栈先入后出。 具体的实现和用法根据语言的不同而不同。 参考的文章 https://programmercarl.com/%E6%A0%88%E4%B8%8E%E9%98%9F%E5%88%97%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 232.用栈实现队列 这个定义入栈和出栈,往队列中加入…...
redis:RDB和AOF机制
个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 前言RDBAOF总结 前言 redis是一个内存数据库,把数据存储在内存中的,而内存中的数据是不持久的,要想能够做…...
券商隔夜单自动下单交易接口
之前研究打板排板,研究怎么才能买得进去。 最近遇到几只利空跌停板,缩量跌停,明天大概率继续一字封板跌停。 如果卖不掉,意味着还要继续吃几个跌停,甚至ST票十几个跌停都有可能。 一次跌停亏几万,还是挺…...
生成任意3D和4D场景!GenXD:通用3D-4D联合生成框架 | 新加坡国立微软
文章链接: https://arxiv.org/pdf/2411.02319 项目链接:https://gen-x-d.github.io/ 有视频 亮点直击 设计了一个数据整理流程,从视频中获取包含可移动物体的高质量4D数据,并为30,000个视频标注了相机姿态。这个大规模数据集称为CamVid-30K&…...
通过命令学习k8s
1、kubectl 命令可以列出所有命令 2、kubectl version 命令可以查看版本号 3、kubectl cluster-info命令可以查看集群信息(192.168.218.136:6443 即为kube-apiserver的IP和端口。) [rootk8s-master ~]# kubectl cluster-info Kubernetes master is run…...
【redis】—— 初识redis(redis基本特征、应用场景、以及重大版本说明)
序言 本文将引导读者探索Redis的世界,深入了解其发展历程、丰富特性、常见应用场景、使用技巧等,最后会对Redis演进过程中具有里程碑意义的版本进行详细解读。 (一)初始redis Redis是一种基于键值对(key-value&#x…...
服务器显卡和桌面pc显卡有什么不同
服务器显卡和桌面 PC 显卡在设计目标、性能优化、功能支持和硬件规格上都有显著不同。以下是主要区别: 1. 设计用途 服务器显卡:主要用于计算、深度学习、数据分析、科学计算、虚拟化和图形渲染等任务。其设计目标是持续高负载计算,保证高稳…...
Chrome使用IE内核
Chrome使用IE内核 1.下载扩展程序IE Tab 2.将下载好的IE Tab扩展程序拖拽到扩展程序界面,之后重启chrome浏览器即可...
类和对象(C++)——默认成员函数,构造函数,析构函数
1. 类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会⾃动⽣成的成员函数称为默认成员函数。⼀个类,不写的情况下编译器会默认生成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个,最后两个取地址重载&#…...
深入理解 Vue v-model 原理与应用
一、引言 在 Vue.js 开发中,v-model是一个非常重要且强大的指令。它为开发者在处理表单输入和数据双向绑定等场景中提供了极大的便利。无论是新手还是有经验的开发者,深入理解v-model对于高效地构建 Vue 应用至关重要。本文将对v-model进行深入剖析,从其基本原理、使用方式…...
内网域环境、工作组、局域网等探针方案
1. 信息收集 1.1 网络收集 了解当前服务器的计算机基本信息,为后续判断服务器角色,网络环境做准备 systeminfo 详细信息 net start 启动服务 tasklist 进程列表 schtasks 计划任务(受权限影响) 了解当前服务器的网络接口信息…...
uniapp—android原生插件开发(3Android真机调试)
本篇文章从实战角度出发,将UniApp集成新大陆PDA设备RFID的全过程分为四部曲,涵盖环境搭建、插件开发、AAR打包、项目引入和功能调试。通过这份教程,轻松应对安卓原生插件开发与打包需求! 一、打包uniapp资源包: 打包…...
goframe开发一个企业网站 统一返回响应码 18
响应码的logic package returncodeimport ("context""gf_new_web/internal/service""github.com/gogf/gf/v2/errors/gcode""github.com/gogf/gf/v2/frame/g" )type sReturncode struct { }var (insReturncode sReturncode{}…...
基于STM32的智能门禁系统设计
引言 本项目基于STM32微控制器设计了一个智能门禁系统,通过集成多个传感器模块和控制设备,实现对门禁系统的自动化管理与控制。该系统能够通过RFID卡、密码输入、以及指纹传感器等多种方式对进出人员进行验证,并结合LCD显示屏提供实时信息反…...
Python学习从0到1 day28 Python 高阶技巧 ⑧ 递归
那就祝我们爬不同的山,还能回到同一条路上,不是时时见面,但是时时惦记之人 —— 24.11.13 递归 1.什么是递归 递归在编程中是一种非常重要的算法 递归:即方法(函数)自己调用自己的一种特殊编程写法 函数调用自己,即…...
知识见闻 - 苹果手机拨号键长按
苹果手机(iPhone)在拨号界面长按按键时有一些特定的功能。以下是iPhone拨号键盘上长按按键的主要功能: 数字键 0 - 长按可输入""号,用于国际电话拨号 - 这是最常用的长按功能之一,方便用户拨打国际电话 星号…...
在 KubeVirt 中使用 GPU Operator
在 KubeVirt 中使用 GPU Operator 基于最新的GPU Operator版本24.9.0。 原文链接:GPU Operator with KubeVirt — NVIDIA GPU Operator 24.9.0 documentation 1. 简介 KubeVirt 是 Kubernetes 的一个虚拟机管理插件,允许您在 Kubernetes 集群中运行和…...
安慰剂检验Stata代码(全套代码、示例数据及参考文献)
数据简介:随着因果推断方法在实证研究中的使用比例不断提升,越来越多的文章进行安慰剂检验。其检验基本原理与医学中的安慰剂类似,即使用假的政策发生时间或实验组进行分析,以检验能否得到政策效应。如果依然得到了政策效应&#…...
DAY6 线程
作业1: 多线程实现文件拷贝,线程1拷贝一半,线程2拷贝另一半,主线程回收子线程资源。 代码: #include <myhead.h> sem_t sem1; void *copy1()//子线程1函数 拷贝前一半内容 {int fd1open("./1.txt",O…...
Triton+Istio+Prometheus构建高可用ML模型服务化架构
1. 项目概述:这不是一次“部署”,而是一场从实验室到产线的系统性迁移“From Notebook to Production: Running ML in the Real World (Part 4)”——这个标题里藏着太多被轻描淡写却重若千钧的词。“Notebook”不是指纸质本子,而是Jupyter里…...
Meta 裁员约 8000 人:弥补 AI 巨额投资,削减人力成本
Meta 裁员:弥补 AI 投资缺口据报道,Meta 已通知数千名员工被裁员,此次裁员是为弥补其在人工智能方面的巨额投资。《商业内幕》分享的 Meta 管理层邮件显示,这是公司“持续努力提高运营效率、平衡其他投资的举措之一”。裁员规模与…...
我踩了N多劣质工具坑从嫌弃到真香,2026这款语音生成软件真后悔没早用
上周刚下班被leader留下来整理2小时项目评审会纪要,对着录音逐句暂停记,熬到八点半还错漏了三个核心需求;上个月做行业专家访谈,3小时录音来回听,耳朵疼得发胀还漏了嘉宾的核心观点;报了线上的产品进阶课&a…...
ElevenLabs支持广西话吗?2024最新实测结果曝光:仅2个API参数决定能否合成地道“梧州腔”
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs广西话语音支持的现状与背景 ElevenLabs 作为全球领先的AI语音合成平台,目前尚未在官方API文档、语言列表或控制台界面中提供对广西话(含南宁白话、梧州话、玉林话等粤…...
【Go i18n】TOML语言包
一、VS Code 必备的 TOML 插件1. Even Better TOML(核心高亮与语法检查 👑)搜索关键字:Even Better TOML为什么要装:它是目前全网公认第一的 TOML 插件。装上它之后,你的 .toml 文件不仅会变得色彩斑斓&…...
SaaS系统数据范围权限设计:从RBAC/ABAC到高性能实现
1. 项目概述:当数据安全遇上规模化增长在构建和运营一个面向多租户的大型SaaS(软件即服务)系统时,数据安全与隔离是悬在每一位架构师和开发者头上的“达摩克利斯之剑”。这不仅仅是技术问题,更是商业信任的基石。想象一…...
【下载安装教程】仿宋GB2312、楷体GB2312和方正小标宋简体办公字体安装包下载安装教程
常用办公字体安装与使用指南 适用字体及场景 字体名称适用场景仿宋_GB2312正文内容、正式文档楷体_GB2312批注、说明性文字方正小标宋简体标题、封面文字、强调性内容 支持软件 WPSMicrosoft WordPowerPoint其他主流办公软件 使用方法 安装字体 下载字体文件(.…...
AI智能切片不是‘一键分割’就完事:批量口播视频的工程化切片陷阱与工具选型
Hook你是否试过把一小时口播音频丢进某款‘AI切片工具’,结果导出37条视频——其中12条开头卡在‘呃…’上,8条结尾截断在半句话里,还有5条字幕和画面完全不同步?更糟的是,换一批素材,模型表现又不稳定。这…...
C语言学习笔记20260522—交换两个整数的值(地址传递)/打印1-100直接3倍数的数字/两个数最大公约数(最小公倍数)
一.知识点 函数需要改变实参时,必要要用地址传递,不能用值传递。当一个数%比自己大的数是,%的值就是自己本身。数辗转相除法(欧几里得算法)求两个数的最大公约数。两个数的最小公倍数为两个数的乘积除以最大公约数。 二…...
压路机远程监控运维管理平台方案
某压路机设备制造商发现传统的“卖设备售后维修”模式已难以为继。其售出的设备遍布各地工地,由于缺乏远程数据交互手段,制造商总部如同“盲人摸象”:既无法实时掌握设备在工地的具体位置和作业状态,也难以在设备出现电气故障或PL…...
