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

Java基础:抽象类与接口

1、抽象类和接口的定义:

(1)抽象类主要用来抽取子类的通用特性,作为子类的模板,它不能被实例化,只能被用作为子类的超类。

(2)接口是抽象方法的集合,声明了一系列的方法操作,如果一个类实现了某个接口,那么它必须实现这个接口的所有抽象方法。

2、抽象类与接口的区别:

(1)抽象类和接口都用于抽象化具体对象的,都不能直接实例化,但是两者的侧重点不同:抽象类主要用来抽象类型,表示这个对象是什么;接口主要用来抽象功能,表示这个对象能做什么;

(2)接口可以看成抽象类的变体,所有方法都是抽象的,因此接口只能做方法的声明,不能有方法的实现;而抽象类可以有默认的方法实现,既可以做方法的声明,也可以做方法的实现;

如果往抽象类中添加新的方法,可以给他提供默认的实现,因此可以不需要改变子类的代码;如果往接口中添加方法,那么必须改变实现该接口的类(JDK8 之后,接口也可以有默认的实现)

(3)接口可以继承多个接口,抽象类不可以多继承类,但可以单继承类或多实现接口。

(4)抽象方法和接口函数都不能使用static修饰。抽象方法的访问修饰符可以是public、protected和default,不能是private;接口的默认访问修饰符为public,不能使用其他修饰符。

(5)接口的变量只能是不可变常量,默认修饰符都是public static final;但是抽象类的变量可以是普通变量

(6)抽象类可以有构造器,接口不能有构造器。

(7)接口实现类必须实现接口中的所有声明的方法,但抽象类的子类可以部分实现父类的抽象方法,但如果子类不能全部实现抽象方法,那么该子类只能是抽象类;

(8)与正常Java类的相比,抽象类除了不能实例化之外,和正常Java类没有任何区别,但接口和正常Java类是完全不同的类型。

(9)抽象类和接口是Java语言中两种不同的抽象概念,他们的存在对多态提供了非常好的支持,虽然他们之间存在很大的相似性。抽象类的功能远远超过接口,但是定义抽象类的代价比较高。因为每个类只能继承一个类。因此,在这个抽象类中,你必须编写出其子类的所有共性。虽然接口在功能上会弱化很多,但是他只是针对一组动作的描述,而且可以在一个类中同时实现多个接口,因此在设计阶段会降低难度。

3、分别在哪些地方使用抽象类和接口?

(1)当你关注一个事物的本质时,使用抽象类;当你关注一组操作的时候,使用接口。

(2)如果拥有一些方法并且想让他们中有一些默认的是实现,那么可以使用抽象类。

(3)如果想实现多重继承,那必须使用接口。由于Java不支持多继承,子类不能够继承多类,但是可以实现多个接口。

(4)如果基本功能在不断改变,那么就需要使用抽象类,如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。

四、总结

1、 抽象类在java语言中所表示的是一种继承关系,一个子类只能存在一个父类,但是可以存在多个接口。

2、 在抽象类中可以拥有自己的成员变量和非抽象类方法,但是接口中只能存在静态的不可变的成员数据(不过一般都不在接口中定义成员数据),而且它的所有方法都是抽象的。

3、抽象类和接口所反映的设计理念是不同的,抽象类所代表的是“is-a”的关系,而接口所代表的是“like-a”的关系

抽象类和接口是java语言中两种不同的抽象概念,他们的存在对多态提供了非常好的支持,虽然他们之间存在很大的相似性。但是对于他们的选择往往反应了您对问题域的理解。只有对问题域的本质有良好的理解,才能做出正确、合理的设计。

相关文章:

Java基础:抽象类与接口

1、抽象类和接口的定义: (1)抽象类主要用来抽取子类的通用特性,作为子类的模板,它不能被实例化,只能被用作为子类的超类。 (2)接口是抽象方法的集合,声明了一系列的方法…...

llama.cpp:PC端测试 MobileVLM -- 电脑端部署图生文大模型

llama.cpp:PC端测试 MobileVLM 1.环境需要2.构建项目3.PC测试 1.环境需要 以下是经实验验证可行的环境参考,也可尝试其他版本。 (1)PC:Ubuntu 22.04.4 (2)软件环境:如下表所示 工…...

Web前端基础知识(一)

前端是构建网页的一部分,负责用户在浏览器中看到和与之交互的内容。 网页是在浏览器中呈现内容的文档或页面。 通常,网页使用HTML、CSS、JavaScript(JS)组成。 HTML:定义了页面的结构和内容。包括文本、图像、链接等。 CSS:定义页面的样式…...

基于谱聚类的多模态多目标浣熊优化算法(MMOCOA-SC)求解ZDT1-ZDT4,ZDT6和工程应用--盘式制动器优化,MATLAB代码

一、MMOCOA-SC介绍 基于谱聚类的多模态多目标浣熊优化算法(Multimodal Multi-Objective Coati Optimization Algorithm Based on Spectral Clustering,MMOCOA-SC)是2024年提出的一种多模态多目标优化算法,该算法的核心在于使用谱…...

国标GB28181摄像机接入EasyGBS如何通过流媒体技术提升安防监控效率?

随着信息技术的飞速发展,视频监控技术已成为维护公共安全和提升管理效率的重要手段。国标GB28181作为安防行业的统一设备接入与流媒体传输标准,为视频监控系统的互联互通提供了坚实的基础。EasyGBS作为一款基于GB28181协议的视频云服务平台,通…...

[Unity] ShaderGraph动态修改Keyword Enum,实现不同效果一键切换

上次更新已然四个月前,零零散散的工作结束,终于有时间写点东西记录一下~ 实际使用中,经常会碰到同一个对象需要切换不同的材质,固然可以通过C#直接替换材质球。 或者在ShaderGraph中使用Comparison配合Branch实现切换&#xff…...

Unity开发哪里下载安卓Android-NDK-r21d,外加Android Studio打包实验

NDK下载方法(是r21d,不是r21e, 不是abc, 是d版本呢) google的东西,居然是完全开源的 真的不是很多公司能做到,和那种伪搜索引擎是不同的 到底什么时候google才会开始造车 不过风险很多,最好不要合资,风险更大 Andr…...

FFTW基本概念与安装使用

FFTW基本概念与安装使用 1 基本概念2 编译安装3 使用实例3.1 单线程3.2 多线程 本文主要介绍FFTW库的基本概念、编译安装和使用方法。 1 基本概念 FFTW (Fastest Fourier Transform in the West)是C语言的一个子程序库,用于计算一维或多维离散傅里叶变换(Discrete …...

【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析

Hiヽ(゜▽゜ )-欢迎来到蓝染Aizen的CSDN博客~ 🔥 博客主页: 【✨蓝染 の Blog😘】 💖感谢大家点赞👍 收藏⭐ 评论✍ 文章目录 行为型模式1、模板方法模式(1)概述(2&…...

教师如何打造专属私密成绩查询系统?

期末的校园,被一种特殊的氛围所笼罩。老师们如同辛勤的工匠,精心打磨着每一个教学环节。复习阶段,他们在知识的宝库中精挑细选,把一学期的重点内容一一梳理,为学生们打造出系统的复习框架。课堂上,他们激情…...

【1224】C选填(字符串\0占大小,类大小函数调用,const定义常量,逗号表达式取尾,abs返回值

1.设有数组定义: char array[]"China"; 则数组array所占的存储空间为__________ 6 注意要加上\0的位置 数组中考虑‘\0’,sizeof()判断大小也要考虑‘\0’ 2.初始化数组char[] strArray"kuai-shou",strArray的长度为(&am…...

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——终篇

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——终篇 ​ 至此,本系列的所有备赛分享已经结束 ​ 首先说说备赛的过程吧,这次比赛,真的是让我学到了太多书本上学不到的东西。一开始,对统筹控制还很模糊&a…...

复合机器人:开启智能制造新时代

在当今科技飞速发展的时代,智能制造已成为制造业转型升级的关键驱动力。而复合机器人作为智能制造领域的一颗璀璨新星,正以其卓越的性能和创新的设计,为各行各业带来前所未有的变革与机遇。 复合机器人,顾名思义,是融…...

装饰者模式

代码详解:【设计模式】Java 设计模式之装饰者模式(Decorator)_java 装饰者模式-CSDN博客 // 抽象构件角色 public interface Component {void operation(); }// 具体构件角色 public class ConcreteComponent implements Component {Override…...

【机器学习】当教育遇上机器学习:打破传统,开启因材施教新时代

我的个人主页 我的领域:人工智能篇,希望能帮助到大家!!!👍点赞 收藏❤ 教育是人类社会发展的基石,然而传统教育模式往往难以满足每个学生的个性化需求。随着机器学习技术的兴起,教…...

【蓝桥杯每日一题】分糖果——DFS

分糖果 蓝桥杯每日一题 2024-12-24 分糖果 DFS 题目描述 两种糖果分别有 9 个和 16 个,要全部分给 7 个小朋友,每个小朋友得到的糖果总数最少为 2 个最多为 5 个,问有多少种不同的分法。糖果必须全部分完。 只要有其中一个小朋友在两种方案中…...

information_schema是什么?

前言 在现代数据驱动的应用开发中,理解和管理数据库结构变得尤为重要。几乎所有的SQL数据库管理系统(DBMS)都提供了一个名为 information_schema 的虚拟数据库。它不仅是一个了解数据库内部结构的强大工具,也是一个实现跨平台兼容…...

案例分析-THC7984设计问题报告

目录 简介 配置信息 结论: 简介 使用的环境 AD芯片:THC7984 VGA信号:通过电脑主机产生1024x768 60HZ信号。 配置信息 AD数字数字产生通过FPGA接收。 AD寄存器配置(第一个数数据,第二个是地址): iic_write_reg 1 0x1e iic_write_reg 02 0x5...

HarmonyOS NEXT 技术实践-基于基础视觉服务的多目标识别

在智能手机、平板和其他智能设备日益智能化的今天,视觉识别技术成为提升用户体验和智能交互的重要手段。HarmonyOS NEXT通过基础视觉服务(HMS Core Vision)提供了一套强大的视觉识别功能,其中多目标识别作为其关键技术之一&#x…...

【python】银行客户流失预测预处理部分,独热编码·标签编码·数据离散化处理·数据筛选·数据分割

数据预处理 通过网盘分享的文件:银行流失预测数据和代码 链接: https://pan.baidu.com/s/1loiB8rMvZArfjJccu4KW6w?pwdpfcs 提取码: pfcs 非数值特征处理 目的:将非数值特征转换为数值型,以便模型能够处理。方法: 地理位置&am…...

使用 docker ps 查不到刚刚创建的容器

问题描述 docker创建mysql容器并实现本地目录挂载,虽然创建成功了,但是查看容器却不存在,删除重新创建还是同样的问题。 原因分析: 因为做本地目录挂载的时候在宿主机中创建了相关文件夹,并且还预先把数据库文件丢…...

vue2+element 前端表格下载

前台下载table表格 可下载fixed columns和普通平铺的表格 exportExcel() {const tableContainer document.querySelector(#table)const fixflg tableContainer ? tableContainer.querySelector(.el-table__fixed) : null// const fixflg document.querySelector(.el-table_…...

MySQL使用LOAD DATA INFILE方式导入文本文件

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…...

【从零开始入门unity游戏开发之——unity篇02】unity6基础入门——软件下载安装、Unity Hub配置、安装unity编辑器、许可证管理

文章目录 一、软件下载安装1、Unity官网2、下载Unity Hub 二、修改Unity Hub配置1、设置Unity Hub中文语言2、修改默认存储目录 三、安装unity编辑器1、点击安装编辑器2、版本选择3、关于版本号4、安装模块选择5、等待下载完成自动安装即可6、追加unity和模块 四、许可证管理专…...

SpringBootWeb 篇-深入了解 SpringBoot + Vue 的前后端分离项目部署上线与 Nginx 配置文件结构

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 云服务器的准备 2.0 Xshell 和 Xftp 软件 2.1 Xshell 介绍 2.2 Xftp 介绍 3.0 在云服务器进行环境配置 3.1 安装 JDK 3.2 安装 MySQL 3.3 安装 Nginx 4.0 SpringB…...

优化程序中的数据:从代数到向量解

前言 在前文笔者简单介绍了把数据迭代抽象为线性代数,并介绍了空间体、维度等概念。 数据复用 数据复用是一种提高程序执行效率与数据局部性的方法,分为自复用与组复用, 自复用:如果多个迭代访问同一个内存位置,那…...

【Web】2024“国城杯”网络安全挑战大赛决赛题解(全)

最近在忙联通的安全准入测试,很少有时间看CTF了,今晚抽点时间回顾下上周线下的题(期末还没开始复习😢) 感觉做渗透测试一半的时间在和甲方掰扯&水垃圾洞,没啥惊喜感,还是CTF有意思 目录 Mountain ez_zhuawa 图…...

基于ceres优化的3d激光雷达开源算法

以下是一些基于CERES优化的开源激光雷达SLAM或相关算法: (1) LOAM (Lidar Odometry And Mapping) 简介: LOAM是一种经典的激光雷达里程计和建图算法,它通过提取特征点(角点和平面点),利用ICP(Iterative Cl…...

【FAQ】HarmonyOS SDK 闭源开放能力 — Vision Kit(2)

1.问题描述: 人脸活体检测返回上一页App由沉浸式变为非沉浸式多了上下安全区域。 解决方案: 检测结束后需要自己去设置沉浸式配置。 2.问题描述: Vision Kit文字识别是本地识别,还是上传至服务器,由服务器来识别文…...

【LeetCode】726、原子的数量

【LeetCode】726、原子的数量 文章目录 一、递归: 嵌套类问题1.1 递归: 嵌套类问题 二、多语言解法 一、递归: 嵌套类问题 1.1 递归: 嵌套类问题 遇到 ( 括号, 则递归计算子问题 遇到大写字母, 或遇到 ( 括号, 则清算历史, 并开始新的记录 记录由两部分组成: 大写字母开头的 …...