示例讲述类、接口继承,类、抽象类实现接口相关内容

定义A接口:

public interface IService<T> {default boolean save(T entity) {return SqlHelper.retBool(this.getBaseMapper().insert(entity));}
}

定义B接口继承A接口:

public interface IBaseService<T> extends IService<T> {ResponseValue curd(HttpServletRequest req, T entity, int page, int size) throws Exception;
}

定义实现类C实现A接口:

public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {}

定义实现类D继承C实现类,实现B接口:

@Service
@Slf4j
public class BaseServiceImpl<M extends BaseMapper<T>, T> extends ServiceImpl<M, T> implements IBaseService<T> {@Overridepublic ResponseValue curd(HttpServletRequest req, T model, int page, int size) throws Exception {}
}

上述代码是一个典型的Java接口和类的继承实现逻辑。下面我将对相关概念进行解释:

接口(Interface):接口是一种抽象的规范,定义了一组方法的签名(方法名、参数列表和返回类型),而不包含具体的实现代码。接口中的方法默认是公共的、抽象的,不需要提供具体的实现。接口可以包含常量和默认方法的定义。在Java中,接口使用interface关键字声明。类(Class):类是对对象的封装,描述了对象的属性和行为。它可以实例化为具体的对象,并提供对应的方法来操作对象。类可以继承其他类或实现接口。在Java中,类使用class关键字声明。继承(Inheritance):继承是一种面向对象的特性,它允许一个类继承另一个类的属性和方法。被继承的类称为父类或超类(superclass),继承的类称为子类或派生类(subclass)。子类继承了父类的属性和方法,并可以添加新的属性和方法,或者修改父类的方法。通过继承,子类可以复用父类的代码并扩展功能。接口继承(Interface Inheritance):接口可以通过extends关键字继承其他接口。接口继承的概念类似于类的继承,子接口可以继承父接口的方法签名,并可以添加新的方法签名。一个接口可以继承多个接口,形成接口的继承链。类实现接口(Implementing Interfaces):类可以通过implements关键字实现一个或多个接口。实现接口意味着类要遵循接口定义的方法签名,并提供具体的方法实现。一个类可以同时实现多个接口,通过逗号分隔。

在给出的代码中,IBaseService是一个接口,继承自IService接口。IBaseService接口定义了一些通用的服务方法,例如增删改查操作。IBaseService没有提供具体的方法实现,它只是定义了方法的签名。

BaseServiceImpl是一个类,它继承自ServiceImpl<M, T>类并实现了IBaseService接口, M可以是任何继承自BaseMapper接口的Mapper接口类型。BaseServiceImpl类提供了对IBaseService接口中定义的方法的具体实现。通过继承ServiceImpl类,BaseServiceImpl类获得了一些通用的服务方法的默认实现。

通过这种继承实现的方式,BaseServiceImpl类可以作为服务类的基类,提供了通用的服务方法的实现,而具体的业务服务类可以继承BaseServiceImpl并根据自身的需求进行扩展和重写。这样可以实现代码的复用和统一的服务接口定义。

总的来说就是:实现类实现了接口就要实现这个接口的所有方法,继承一个父类,父类实现接口的所有方法后,当前实现类,就不用再做实现了。

以下是抽象类和接口的描述:
抽象类

抽象类 是一种不能被实例化的类,它可以包含抽象方法和普通方法。
抽象方法是一种没有实现体的方法,只有方法签名,用 abstract 关键字标识。
子类继承抽象类后,必须实现其中的抽象方法,除非子类也声明为抽象类。

接口

接口 定义了一组方法的集合,但没有实现这些方法。
接口中的方法默认都是抽象方法,不需要使用 abstract 关键字标识。
类可以实现多个接口,从而拥有这些接口定义的方法。

继承

继承 允许一个类(子类)派生出另一个类(父类)的属性和行为。
子类继承父类的属性和方法,可以重写父类的方法来实现特定的行为。

实现

在面向对象编程中,实现 是指一个类遵循了某个接口的规范,实现了该接口中定义的所有方法。
通过实现接口,类表明其将提供接口中定义的所有方法的具体实现。

方法重写

当子类继承自父类或实现了接口后,如果需要改变方法的行为,就可以在子类中重写(override)父类的方法或接口中定义的方法。
重写方法必须具有相同的方法名称、参数列表和返回类型。在子类中可以重新定义方法的实现。
使用 @Override 注解可以帮助编译器检查是否正确重写了父类的方法或实现了接口中定义的方法。

总体来说,抽象类、抽象方法和接口都是用来定义规范和约束的工具。在子类继承抽象类或实现接口时,需要重写其中的抽象方法,以实现具体的行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/221025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<蓝桥杯软件赛>零基础备赛20周--第10周--二分

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周&#xff08;读者可以按…

门窗企业网站建设作用是什么

门窗作为市场重要的组合部分&#xff0c;其应用广泛使得众多商家入局经营&#xff0c;无论大型建筑还是家庭应用&#xff0c;都有较高需求度&#xff0c;尤其对品牌商来说&#xff0c;无论直售还是加盟都可以获得不菲效益。 但对门窗企业来说&#xff0c;也需要解决几个痛点&a…

读写分离如何在业务中落地?

本文我们来探讨读写分离如何在业务中落地。 读写分离是业务开发中常用的技术手段&#xff0c;在面试中也是热点问题&#xff0c;今天我们要讲的是在什么业务场景下需要读写分离&#xff0c;读写分离实现的机制&#xff0c;以及实际生产中应用读写分离要注意的问题。 什么时候…

深入解析Spring Boot集成MyBatis的多种方式

文章目录 1. 引言2. 传统的XML配置方式2.1 引入依赖2.2 配置数据源和MyBatis2.3 编写Mapper接口和XML映射文件2.4 使用Mapper 3. 注解配置方式3.1 引入依赖3.2 配置数据源和MyBatis3.3 编写Mapper接口3.4 使用Mapper 4. MyBatis动态SQL4.1 使用XML配置方式4.2 使用注解配置方式…

C++容器系列之list详解与应用

C容器系列之list详解与应用 引言list的元素排列特性优缺点与其他容器的区别应用场景常见函数代码示例 引言 C标准模板库&#xff08;STL&#xff09;提供了丰富的容器类&#xff0c;其中之一就是list。list是一个双向链表实现的容器&#xff0c;与数组和向量等容器有很大的区别…

RT-DETR核心结构改进:即插即用 | 集成YOLO-MS论文SOTA核心结构,原汁原味RT-DETR改进升级版,打破性能瓶颈

💡本篇内容:RT-DETR核心结构改进:即插即用 | 集成YOLO-MS论文SOTA核心结构,原汁原味RT-DETR改进升级版,打破性能瓶颈 💡🚀🚀🚀本博客 改进源代码改进 适用于 RT-DETR 按步骤操作运行改进后的代码即可 💡本文提出改进 原创 方式:二次创新, 该专栏专注于RT-DE…

一文了解 Go 接口

如果本文对你有帮助&#xff0c;不妨点个赞&#xff0c;如果你是 Go 语言初学者&#xff0c;不妨点个关注&#xff0c;一起成长一起进步&#xff0c;如果本文有错误的地方&#xff0c;欢迎指出 接口 在 Go 语言中&#xff0c;接口是一种抽象的类型&#xff0c;是一组方法的集合…

react中使用ref属性获取元素,并判断该元素内是否含有子元素

在react中&#xff0c;可以使用ref属性来获取到一个元素的引用&#xff0c;然后再使用ref.current来访问该元素的DOM节点&#xff0c;使用DOM API来判断这个元素是否含有子元素&#xff0c;要判断一个元素是否含有子元素&#xff0c;可以使用hasChildNodes()&#xff0c;其返回…

Salesforce×阿里云,影响几何?

实际上&#xff0c;从这个视角来看&#xff0c;Salesforce和阿里云的合作也恰在成为着这个市场的一个新催化剂。“期待Salesforce能给中国市场带来一些新的增量&#xff0c;包括对合作伙伴的态度&#xff0c;对产品的态度等等。”一位CRM相关人士告诉我们。 那么&#xff0c;阿…

slurm 23.11.0集群 debian 11.5 安装

slurm 23.11.0集群 debian 11.5 安装 用途 Slurm(Simple Linux Utility for Resource Management&#xff0c; http://slurm.schedmd.com/ )是开源的、具有容错性和高度可扩展的Linux集群超级计算系统资源管理和作业调度系统。超级计算系统可利用Slurm对资源和作业进行管理&a…

【Jmeter】Jmeter基础4-Jmeter元件介绍之监听器

2.4、监听器 监听器主要用于收集、统计、查看和分析结果。 2.4.1、察看结果树 作用&#xff1a;查看取样器请求和响应结果&#xff0c;包括消息头&#xff0c;请求的数据&#xff0c;响应的数据等。一般在调试时才用&#xff0c;在实际运行压测时建议禁用&#xff0c;因为大量…

【NSX-T】6. 搭建NSX-T环境 —— 配置 Segment 网段

目录 6. 配置 SegmentLab 说明6.1 创建 Segment&#xff08;1&#xff09;创建 Web-Segment&#xff08;2&#xff09;创建 App-Segment 和 DB-SegmentApp-SegmentDB-Segment 6.2 验证 Segment&#xff08;1&#xff09;在 NSX Manager中查看&#xff08;2&#xff09;在vSpher…

前端走向未来:真相还是焦虑的贩卖?

目录 一、为什么会出现“前端已死”的言论 二、你如何看待“前端已死” 三、前端技术的未来发展趋势 四、前端人&#xff0c;该如何打好这场职位突围战&#xff1f; 我的其他博客 一、为什么会出现“前端已死”的言论 近来&#xff0c;IT圈内流传着“Java 已死、前端已凉”…

阿里云服务器环境配置,ssh免密登录和配置docker

此文章适合ubuntu20.04 64位和ubuntu22.04 64位版本 一.登陆服务器 租完服务器后&#xff0c;首选需要使用本地gitbash或者cmd进入服务器&#xff0c; 命令&#xff1a; ssh rootxxx xxx为服务器公网ip&#xff0c;然后yes&#xff0c;然后输入密码就会进入自己的服务器&am…

医院污水处理设备远程监控超标报警解决方案

行业背景 近年来&#xff0c;我国医疗机构建设得到了巨大的发展。根据《2022年我国卫生健康事业发展统计公报》&#xff0c;2022年末&#xff0c;全国医疗卫生机构总数达1032918个。截至2022年10月&#xff0c;根据全国排污许可证管理信息平台&#xff0c;共有 13316家医院核发…

修改Docker0和容器的地址

修改Docker0和容器的地址 1. 需求 默认服务器安装完Docker-ce后会给docker0分配172.17.0.1/16地址. 公司新接入一个网段正好与172.17.0.1/16冲突,此时访问这台服务器的容器时就会发生网络不可达. 2. 解决方法 修改/etc/docker/daemon.json 加入一个自定义网段 vim /etc/d…

想要在电脑桌面上使用手机便签怎么操作?

作为一名上班族&#xff0c;我们时常需要在电脑和手机之间同步使用便签&#xff0c;以记录工作、生活中的重要事项。然而&#xff0c;有些时候我们可能更习惯在手机上使用便签&#xff0c;但又希望在电脑桌面上也能够方便地查看和编辑这些便签。那么&#xff0c;如何在电脑桌面…

python 内置数据结构

python内置的数据结构有&#xff1a; 列表(list) 元组(tuple) 字典(dict) 集合(set) 在python语言中&#xff0c;以上4种数据结构和基础数据类型&#xff08;整数、浮点数等&#xff09;统称为“内置类型”&#xff08;Built-in Types&#xff09;。 1. 列表(list) 参考&…

k8s-8 ingress

ExternalName类型 当集群外的资源往集群内迁移时&#xff0c;地址并不稳定&#xff0c;访问域名或者访问方式等会产生变化&#xff1b; 使用svc的方式来做可以保证不会改变&#xff1a;内部直接访问svc&#xff1b;外部会在dns上加上解析&#xff0c;以确保访问到外部地址。 …

PHP多维数组数据存储和读取

PHP中多维数组的数据存储和读取可以通过以下方式实现&#xff1a; 声明和初始化多维数组&#xff1a; $array array(array(1, 2, 3),array(4, 5, 6),array(7, 8, 9) );通过索引访问多维数组的元素&#xff1a; echo $array[0][0]; // 输出1 echo $array[1][2]; // 输出6使用…