接口与实体类

OSI参考模型总结 我们都是 阅读详情

这里是修真院后端小课堂,每篇分享文从

【接口与实体类 】

接口与实体类

-深圳-Java-詹威斯-

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍
为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?

Interface和Class都是java文件,Interface实现类和直接写成实体类其实都可以完成我们要的功能,那为什么不直接写成实现类?为什么更倾向于用接口?

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为

2.知识剖析
实体类是什么?

实体类比较常见,也比较好理解,就是一个普通的Java class:

有成员变量

有构造器、方法,或main函数

可以直接new一个对象来使用

可以extends

接口Interface是什么?

interface是一个需要实现的class,是Java里很重要的一个概念

构造方法和其他方法一般没有自己的实现(可以有default实现,在这暂不考虑)

一般没有自己的成员变量,如果有,默认都是public,static,final类型的,且必须初始化,也即接口中的成员变量为常量

Java接口必须通过类来实现它的抽象方法,通过implements来实现,可以有不止一个实现类

同时,一个类也可以同时实现多个接口,实现多继承

接口中没有构造方法,不能被实例化。除了构造方法也同时有其他方法,但是只确定了返回值的类型,参数的个数和类型,默认都是public,abstract类型,没有方法体,不能被实例化

当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象类

可以extends

3.常见问题
为什么更倾向于用interface?

同学们的疑惑:我定义了一个接口,但是我在继承这个接口的类中还要写接口的实现方法,那我不如直接就在这个类中写实现方法岂不是更便捷,还省去了定义接口

4.解决方案
对现实问题进行抽象:OOP的一个思想,就是不需要对面客户Client知道具体的实现,而只通过文档了解入参个数、类型、返回值类型以及异常,就可以直接拿去使用。至于具体的实现,是可以不用理会的。实现有开发者去关心。

规范:如果未来要更改实现的具体内容,只要去改实现类就可以了,接口是不用动的。这样就极大地降低了耦合度。

多态:一个接口可以有多个实现,一个类可以实现多个接口。

5.编码实战

6.扩展思考
抽象类和实体类

抽象类和接口

抽象类时对现实问题对象性质的抽象

接口更多时对对象方法的抽象

7.参考文献
优快云、百度百科、师兄们提供的资料

8.更多讨论
什么时候用接口?什么时候用实体类?

写接口要注意什么?

写实现类要注意什么?

谢谢大家阅读,如有问题,恳请批评指正

by 深圳分院 - 詹威斯

接口返回用Map还是实体类?一篇讲透选型与避坑指南 在Java接口设计中,返回值结构的选择直接影响代码的可维护性与稳定性。List<Map<String, Object>>与实体类是两种截然不同的数据建模方式:前者强调动态灵活,适合字段不固定的场景;后者通过类型安全与结构契约保障长期可维护性。理解二者在可读性、编译期检查、性能及重构成本上的差异,是做出正确技术决策的基础。实际开发中,动态报表、对接第三方API等场景常依赖Map的灵活性,而用户、订单等核心业务对象则应使用实体类。同时,EasyExcel嵌套模板、IDEA自动生成实体类、分组时null key处 阅读详情

相关推荐

Java序列化与Serializable接口:为什么实体类必须实现它

在分布式系统与高并发场景下,Java对象常常需要跨JVM传输、写入缓存或持久化到磁盘,而这一切的基础正是Java序列化机制。序列化将对象的状态转换为字节流,反序列化则从字节流重建对象。要让对象具备这种能力,实体类必须实现Serializable接口——它是一个标记接口,由ObjectOutputStream在写入时检查,未实现则抛出NotSerializableException。实际工程中,仅实现接口还不够,显式声明serialVersionUID同样关键,它能避免因类结构变化导致InvalidClass

weixin_33883104的博客 257

Java接口、抽象类、实体类的区别与关系

接口:在JDK7.0之前只能有抽象方法,8.0新增了静态方法和默认方法。9.0又新增了私有方法。所以接口不能被继承只能被实现。一个类可以实现一个或多个接口,如果类实现接口(可能是多个)其中有部分抽象方法(哪怕只有1个)没有被实现,则这个类只能是抽象类,如果你希望定义一个实体类,则必须实现所有抽象方法。 抽象类:可以有抽象方法,也可以没有抽象方法。 实体类:不能有抽象方法。 抽象类和实体类可以相互继...

cfbs168的博客 4607

Eclipse右键一键生成MyBatis实体类、Mapper接口与XML映射文件

在Eclipse中写好generatorConfig.xml配置后,选中数据库表或已有Mapper文件,右键调用生成命令,立即产出Java实体类、Mapper接口、XML映射文件和DAO层代码。支持MySQL、Oracle、PostgreSQL等主流数据库,允许自定义模板、包路径、字段命名规则及JDBC类型到Java类型的映射关系。整个过程完全在IDE内完成,不依赖Maven命令行或外部构建工具,安装插件后无需重启Eclipse,即装即用。适配Eclipse 4.5及以上版本,插件体积轻、响应快,专为Jav

t8u9v0w1x的博客 200

java 中实体类,接口,抽象类之间的关系总结

本人通过实际操作总结了一下几点: 一、实体类和抽象类的关系      一个实体类只可以继承一个实体类或者是抽象类,因为java中只有一个父亲      一个实体类不能实现抽象类 二、实体类和接口的关系       一个实体类可以实现多个接口       一个实体类可以

6900

Java全自动生成功能:一键生成数据库表实体类、MyBatis接口与XML映射文件

若需绕过默认行为(如读取视图或临时表),可通过继承并重写方法实现定制化解析:@Override// 添加自定义逻辑:过滤掉某些视图✅参数说明:当前上下文中所有待处理的表模型集合;- 可在此阶段动态增删表,影响后续生成范围。综上所述,MBG 的元数据分析机制虽简单却极为有效,依托 JDBC 标准避免了对特定数据库语法解析器的依赖,同时保留了足够的扩展点供企业级定制需求使用。可通过重写实现更现代的时间类型支持:@Override@Override。

weixin_36304957的博客 1451

ubuntu安装eigen3.3.7

查看已安装版本: gedit /usr/include/eigen3/Eigen/src/Core/util/Macros.h 或 gedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h 卸载先前版本: sudo updatedb locate eigen3 得到eigen库的位置 卸载: sudo rm -rf /usr/include/eigen3 /usr/lib/cmake/eigen3 ...

reason的博客 1万+

接口可以继承接口吗?接口、抽象类、实体类的关系

1、接口可以继承接口,抽象类不可以继承接口,但可以实现接口。 2、抽象类可以继承实体类。抽象类可以实现(implements)接口,抽象类是否可继承实体类,取决于实体类必须是否有明确的构造函数。 3、抽象类可以继承实体类,这是因为抽象类可继承性且有方法。 4、一个接口可以继承多个接口. interface C extends A, B {}是可以的; 5、 一个类可以实现多个接口: class D implements A,B,C{},但是一个类只能继承一个类,不能继承多个类 class B ext

GEGEGEHUI的博客 1万+

离散系统傅里叶变换的常用结论证明

本文介绍了离散系统傅里叶变换的三个重要结论:1)时域卷积对应频域相乘(公式1-3);2)时域相乘对应频域卷积(公式4-6);3)帕塞瓦尔定理(公式7)及其广义形式,证明信号能量在变换域保持不变。文末提供了MATLAB卷积运算演示程序,通过动画展示离散信号卷积过程(翻转、平移、相乘、累加),并以方波信号为例给出运行结果图。该程序直观呈现了卷积运算的步骤与结果。

newtton的博客 1302

java类库里有的是实体类有的是抽象类有的是接口,有什么讲究吗?

我们学习java,必不可少内容的除了面向对象思想就是类库了,类库中有的类是实体类,比如Throwable,有的是抽象类,比如Inputstream,有的是接口,比如Runnable,抽象类比实体类抽象,同时接口也比抽象类更加抽象。 我在学习的时候老师提出这样一个问题,为什么SUN公司在创造Java的时候,有的要写成实体类,有的要写成抽象类,有的则要写成接口? 其中一个有很多年开发经验的人回答令我们所有人印象深刻,她巧妙得用公司的职位来进行类比,把实体类比喻成基层员工,抽象类比喻成中层管理者,而接口则比喻为公

weixin_46107282的博客 273

现代密码学5.3--Hash and MAC

现代密码学5.3--Hash and MAC 博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些笔记供自己回忆,如有错误请指正。整理成一个系列现代密码学,方便检索。 第二章定义了完美安全及其对应的密码方案“一次一密”, 第三章介绍了多种安全定义 3.1-3.3 计算安全,PRG和基于PRG构造的满足计算安全的密码方案; 3.4-3.5 CPA安全,PRF和基于PRF构

qq_41545715的博客 684

Claude Code 错误解决方案 API Error: 前缀通用错误

本文分析了Claude Code与Anthropic API通信时出现的通用错误处理问题。当API返回未分类错误时,系统会直接显示"API Error: "前缀的原始错误信息。通过错误链路追踪发现,这是由于未匹配特定错误类型时触发了通用兜底处理逻辑。文章提供了三种解决方案:查看具体错误内容、启用调试日志以及提交问题反馈,并建议用户关注错误码、使用/compact命令处理上下文超限问题。最后强调这些未分类错误是预期行为,用户应通过错误消息中的线索自行排查或反馈开发者。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 1344

SpringBoot 同一请求入口,根据不同的入参, 调用不同的实体类接收

SpringBoot 同一请求入口,根据不同的入参, 调用不同的实体类接收

weixin_44449869的博客 5162

MMC混合型换流器系统设计与开关模型仿真

摘要:本文针对220kV交流/400kV直流电压等级,设计了由20个半桥和20个全桥子模块组成的混合型MMC换流器系统。通过建立开关函数等效模型,研究了其拓扑结构、工作原理及控制策略,包括NLM调制、电容电压均衡和环流抑制。MATLAB/Simulink仿真结果表明,系统直流电压波动控制在±5%以内,交流电流THD低于1.8%,验证了混合型MMC在高压大功率应用中的良好性能。该研究为工程实践提供了参考依据。 关键词:模块化多电平换流器;开关函数模型;混合子模块;最近电平逼近调制;电容电压均衡

huanghm88的专栏 130

接口的请求实体类与响应实体类

在开发类似SDK的应用时, 通常需要指定接口的请求实体与响应实体。随着业务的不断开拓,接口的数量逐步增多,有没有一种好的编码方式来处理新的业务请求呢?看如下的操作

qq_42026600的博客 419

【WRFDA教程】客观分析(OBSGRID)详解

客观分析(OBSGRID)详解

WW、forever的博客 1133

Codex 赋能UI自动化测试

✅ 零编码门槛:业务人员也能直接上手✅ 无需复杂配置:跳过部署陷阱,分钟级启用✅ 无权限风险:沙箱隔离 + 操作审计,安全可控✅ 精准匹配 UI 自动化需求:生成代码与执行操作一体化本文我使用CRM系统分类管理功能进行测试演示,手把手教你从测试用例编写,到上传Codex、自动执行浏览器操作,每一步都有细节,看完直接复刻到工作中。

十二测试录 456

滚雪球学MyBatis-Plus(05):创建实体类与Mapper接口

在上期内容中,我们详细讲解了 MyBatis Plus 的基础配置,包括如何配置分页插件、乐观锁插件以及性能分析插件。我们还介绍了如何设置项目的日志输出,这些配置极大地提高了项目的开发效率和调试便利性。通过这些配置,我们已经为项目的进一步开发奠定了坚实的基础。本期内容将继续深入,重点介绍如何创建实体类和 Mapper 接口。实体类用于映射数据库表结构,而 Mapper 接口则提供了与数据库交互的方法。通过这些步骤,你将学会如何将数据库表结构映射到 Java 对象,并实现对数据库的基本操作。

**My Coding Family** 1215

Android Framework WMS面试题及参考答案

什么是 WindowManagerService(WMS)?它的作用是什么? WindowManagerService(WMS)是 Android 系统中非常重要的一个系统服务。它运行在系统进程(system_server 进程)中。 从本质上来说,WMS 是 Android 窗口管理系统的核心。它负责管理系统中的所有窗口,包括应用程序窗口、系统窗口(如状态栏、导航栏)等。 它的主要作用有很多。首先是窗口的创建和销毁。当一个应用请求创建一个窗口时,WMS 会协调各个模块完成窗口的创建工

大模型大数据攻城狮的专栏 2161

学习mybatis03---写映射接口与实体类

1.在src/main/java文件中新建一个包存放mapper接口,包名要符合命名规范 2.新建一个接口,接口名字要语义化,eg:UserMapper public interface UserMapper { @Select("select * from t_user where id=#{id}") public User findById(int id...

awxrupdeh127009539的博客 213

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

MyBatis-Plus实体类与Mapper接口:基础映射关系

本文介绍了MyBatis-Plus中实体类与数据库表的映射方法及Mapper接口的使用。通过@TableName和@TableField注解解决属性名与字段名不一致问题,并展示如何创建继承BaseMapper的Mapper接口进行基本数据库操作。文章包含实体类创建、Mapper接口实现及测试验证步骤,帮助开发者掌握MyBatis-Plus的基础映射关系,为后续高级查询功能学习打下基础。

fykam的博客 1002

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

面向对象——控制类、接口类、实体类的识别与对比

本文系统介绍了面向对象分析中的三类核心分析类:接口类(边界类)、控制类和实体类。接口类负责系统与外部交互,控制类协调业务逻辑流程,实体类存储核心业务数据。文章详细阐述了基于用例图和职责的识别方法,对比了三类在职责、生命周期和业务逻辑方面的差异,并通过用户登录示例展示其应用。合理划分这三类有助于提高系统可维护性、降低耦合度,为系统设计奠定基础,是面向对象分析与设计的核心技能。

weixin_50553521的博客 435

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java 类方法返回接口,管理与技术之方法(接口)行参与返回请用实体类

前言会用与灵活的用好之间是妙之巅豪,失之千里。小细节大管理与大效率,管理没有大小之分, 很小的细节管理可能会很大在个个方面提升效率,降低成本。本章节是鸟菜啊在多年开发中一直使用的规则。方法(借口)行参与返回只用实体类说一个真实的故事刚刚到一个新小组,在一次会议的时候。鸟菜啊:以后所有的方法(接口)行参与返回只用实体类老员工A说:这不是增加了很多工作量吗?新员工B说:是啊,很麻烦啊。鸟菜啊:就这样定...

weixin_39685674的博客 362

管理与技术之方法(接口)行参与返回请用实体类

前言 会用与灵活的用好之间是妙之巅豪,失之千里。小细节大管理与大效率,管理没有大小之分, 很小的细节管理可能会很大在个个方面提升效率,降低成本。本章节是鸟菜啊在多年开发中一直使用的规则。方法(借口)行参与返回只用实体类 说一个真实的故事 刚刚到一个新小组,在一次会议的时候。 鸟菜啊:以后所...

317

JavaScript 中基于 swagger-decorator 的自动实体类构建与 Swagger 接口文档生成

JavaScript 中基于 swagger-decorator 的自动实体类构建与 Swagger 接口文档生成是笔者对于开源项目 swagger-decorator 的描述,对于不反感使用注解的项目中利用 swagger-decorator 添加合适的实体类或者接口类注解,从而实现支持嵌套地实体类校验与生成、Sequelize 等 O...

weixin_33709609的博客 510

快速生成数据表接口实体类与mapper.xml映射文件

1、在目录src\main\resources 下创建 generatorConfig.xml文件。2、pom.xml 文件 引入插件。

chenjian_1208的博客 295
上一篇: 什么是HashMap?什么情况下使用HashMap?
下一篇: Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?
learning__java
博客等级 码龄8年 87粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值