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

Java 关于抽象 -- Java 语言的抽象类、接口和函数式接口

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 008 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自己的技术栈的同学。与此同时,本专栏的所有文章,也都会准备充足的代码示例和完善的知识点梳理,因此也十分适合零基础的小白和要准备工作面试的同学学习。当然,我也会在必要的时候进行相关技术深度的技术解读,相信即使是拥有多年 Java 开发经验的从业者和大佬们也会有所收获并找到乐趣。

在理解了 Java 的基础语法和面向对象编程概念之后,本篇文章将进一步探讨 Java 中的抽象机制。我们将讨论抽象类与接口的区别和使用场景,了解函数式接口在 Java 8 中的引入及其重要性。通过掌握这些高级概念,读者将能够编写出更灵活和可维护的代码。

最后在前言的末尾我补充一下,如果这篇文章,对大家有所帮助或收获一定的乐趣和想法,那么非常欢迎大家能够,点赞、评论、收藏、订阅。这些也将是我持续更新的最大动力。


文章目录

      • 1、什么是 Java 抽象
      • 2、抽象类
        • 2.1、抽象类概述
        • 2.2、抽象类特点
      • 2、接口
        • 2.1、接口概述
        • 2.2、接口特点
        • 2.3、接口的多继承
        • 2.4、接口的新特性——默认方法和静态方法
          • 2.4.1、默认方法(JDK 8 之后)
          • 2.4.2、静态方法(JDK 8 之后)
          • 2.4.3、注意事项
      • 3、函数式接口
        • 3.1、什么是函数式接口
        • 3.2、函数式接口的定义
        • 3.3、主要的函数式接口
          • 3.3.1、接口 `Predicate<T>`
          • 3.3.2、接口 `Consumer<T>`
          • 3.3.3、接口 `Function<T, R>`
          • 3.3.4、接口 `Supplier<T>`
          • 3.3.5、接口 `BiConsumer<T, U>`
          • 3.3.6、接口 `BiFunction<T, U, R>`
          • 3.3.7、接口 `UnaryOperator<T>`:
          • 3.3.8、接口 `BinaryOperator<T>`:
      • 4、接口与抽象类的区别
        • 4.1、包含方法类型
        • 4.2、成员变量
        • 4.3、继承方式
        • 4.4、构造方法


1、什么是 Java 抽象

抽象是面向对象编程(OOP)的一个核心概念,通过抽象,我们可以忽略复杂的细节,只关注核心功能和概念。Java 中的抽象可以通过抽象类和接口来实现,这两者为我们提供了创建抽象类型的机制,允许我们定义方法的签名而不实现它们,具体的实现留给子类或实现类。


2、抽象类

相关文章:

Java 关于抽象 -- Java 语言的抽象类、接口和函数式接口

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 008 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自…...

用 Notepad++ 写 Java 程序

安装包 百度网盘 提取码&#xff1a;6666 安装步骤 双击安装包开始安装。 安装完成&#xff1a; 配置编码 用 NotePad 写 Java 程序时&#xff0c;需要设置编码。 在 设置&#xff0c;首选项&#xff0c;新建 中进行设置&#xff0c;可以对每一个新建的文件起作用。 Note…...

malloc brk mmap

malloc 是一个库函数&#xff0c;通常在 C 标准库中实现&#xff0c;用于动态内存分配。malloc 的具体实现可能因库、操作系统和平台而异&#xff0c;但通常它会与底层操作系统提供的内存管理功能进行交互。 对于大多数现代操作系统&#xff08;如 Unix、Linux、Windows 等&am…...

java多线程相关概念

在Java多线程编程中&#xff0c;有几个关键的术语需要理解&#xff1a; 1.线程(Thread)&#xff1a;线程是操作系统能够进行运算调度的最小单位&#xff0c;它被包含在进程之中&#xff0c;是进程中的实际运作单位。 2.进程(Process)&#xff1a;进程是系统进行资源分配和调度…...

【html】简单网页模板源码

大家每一次在写网页的时候会不会因为布局而困扰今天就给大家带来一个我自己亲自编写的网页的基本的模板大家可以直接去利用&#xff0c;大家也可以利用自己的想法去做空间的美化和完善。 源码&#xff1a; html: <!DOCTYPE html> <html lang"zh"><…...

借助Historian Connector + TDengine,打造工业创新底座

在工业自动化的领域中&#xff0c;数据的采集、存储和分析是实现高效决策和操作的基石。AVEVA Historian (原 Wonderware Historian) 作为领先的工业实时数据库&#xff0c;专注于收集和存储高保真度的历史工艺数据。与此同时&#xff0c;TDengine 作为一款专为时序数据打造的高…...

51单片机-实机演示(LED点阵)

目录 前言: 一.线位置 二.扩展 三.总结 前言: 这是一篇关于51单片机实机LED点阵的插线图和代码说明.另外还有一篇我写的仿真的连接在这:http://t.csdnimg.cn/ZNLCl,欢迎大家的点赞,评论,关注. 一.线位置 接线实机图. 引脚位置注意: 1. *-* P00->RE8 P01->RE7 …...

STM32硬件接口I2C应用(基于MP6050)

目录 概述 1 STM32Cube控制配置I2C 1.1 I2C参数配置 1.2 使用STM32Cube产生工程 2 HAL库函数介绍 2.1 初始化函数 2.2 写数据函数 2.3 读数据函数 3 认识MP6050 3.1 MP6050功能介绍 3.2 加速计测量寄存器 ​编辑3.3 温度计量寄存器 3.4 陀螺仪测量寄存器 4 MP60…...

基于JSP的贝儿米幼儿教育管理系统

开头语&#xff1a; 你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果您对本系统感兴趣或者有相关需求&#xff0c;文末可以找到我的联系方式。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; JSP技术 工具&#xff1a; IDEA/Eclipse、…...

数字化与文化交融,树莓集团助力园区文化升级

树莓集团在产业园运营领域建设了特色空间布局&#xff0c;包括产业实训基地、产业办公中心、业务资源平台、产学研中心、数字资产空间、双创孵化空间、产业实验室和人才项目转化中心等八大板块&#xff0c;共同构建了一个全面而深入的产业支撑体系&#xff0c;为园区文化建设提…...

【原创课程】如何制作安装板

具体步骤如下: 第一步:新建页类型为“安装板布局图(交互式)”并修改页描述为“安装板布局图”。 第二步:新建安装板 第三步:设置图纸上符号元件的部件,双击符号,弹出常规设备窗口,点击部件进行选择 第四步:打开2D安装板导航器,将图纸中的设备拖拽到安装板上 第五步…...

简单聊聊【java.util.Stream】,更新中

public class Main {public static void main(String[] args) {List<Integer> numbers Arrays.asList(1, 2, 3, 4, 5, 6); // 原始容器&#xff1a;java.util.Arrays.ArrayList#ArrayList// 创建一个 Stream&#xff0c;过滤出偶数&#xff0c;并打印它们numbers.str…...

GIS之arcgis系列07:conda环境下安装arcpy环境

首先将python27环境下的“Desktop10.8.pth”拷贝到anaconda环境下。 路径如下&#xff08;仅参考&#xff09;&#xff1a; C:\Python27\ArcGIS10.8\Lib\site-packages\Desktop10.8.pth D:\Anaconda\Lib\site-packages 在anaconda prompt中穿创建一个新环境 conda create -…...

容器运行nslookup提示bash: nslookup: command not found【笔记】

在容器中提示bash: nslookup: command not found&#xff0c;表示容器中没有安装nslookup命令。 可以通过以下命令安装nslookup&#xff1a; 对于基于Debian/Ubuntu的容器&#xff0c;使用以下命令&#xff1a; apt-get update apt-get install -y dnsutils对于基于CentOS/R…...

解析 Spring 框架中的三种 BeanName 生成策略

在 Spring 框架中&#xff0c;定义 Bean 时不一定需要指定名称&#xff0c;Spring 会智能生成默认名称。本文将介绍 Spring 的三种 BeanName 生成器&#xff0c;包括在 XML 配置、Java 注解和组件扫描中使用的情况&#xff0c;并解释它们如何自动创建和管理 Bean 名称。 1. Be…...

细说ARM MCU的串口接收数据的实现过程

目录 一、硬件及工程 1、硬件 2、软件目的 3、创建.ioc工程 二、 代码修改 1、串口初始化函数MX_USART2_UART_Init() &#xff08;1&#xff09;MX_USART2_UART_Init()串口参数初始化函数 &#xff08;2&#xff09;HAL_UART_MspInit()串口功能模块初始化函数 2、串口…...

000-基于sklearn的机器学习入门:工作环境搭建与配置

本专栏将介绍基于Scikit-learn(简称sklearn)的机器学习入门知识。包括但不一定限于&#xff0c;机器学习基本知识、sklearn库简介&#xff0c;基于Sklearn库的机器学习实践。 这是本专栏的第000篇&#xff0c;将介绍如何安装和配置sklearn环境&#xff0c;不仅包括Sklearn库的…...

就业班 第四阶段(k8s) 2401--6.5 day3 Yaml语法解析+钩子函数

Yaml语法解析 今天学的都是在pod里面操作的 格式 这个文件要创建的资源对象是什么 kind: Pod 这个资源对象所在的api版本是什么 apiVersion: v1 元数据 metadata: 对这个pod中的镜像的描述 spec&#xff1a; 字典无序 同一级可以调换顺序 &#xff1a;比如kind和apiVersion …...

电脑开机出现英文字母,如何解决这个常见问题?

电脑开机时出现英文字母的情况通常意味着系统在启动过程中遇到了问题。这些英文字母可能是错误信息、系统提示或BIOS设置问题。通过理解这些信息并采取适当的措施&#xff0c;您可以解决大多数启动问题。本文将介绍三种解决电脑开机出现英文字母问题的方法&#xff0c;帮助您恢…...

一张试卷

目录 问题 1: 1.时间 题目描述1 输入1 输出1 样例输入1 样例输出1 提示1 代码1 问题 2: 超酷的电话号码 题目描述2 输入2 输出2 样例输入2 样例输出2 提示2 代码2 问题 3:3.爸爸的数学题 题目描述3 输入3 输出3 样例输入3 样例输出3 提示3 代码3 问题 4: 4. 营养膳食 题目描述4…...

记一次 .NET某游戏币自助机后端 内存暴涨分析

一&#xff1a;背景 1. 讲故事 前些天有位朋友找到我&#xff0c;说他们的程序内存会偶发性暴涨&#xff0c;自己分析了下是非托管内存问题&#xff0c;让我帮忙看下怎么回事&#xff1f;哈哈&#xff0c;看到这个dump我还是非常有兴趣的&#xff0c;居然还有这种游戏币自助机…...

计算机考研|哪些985/211院校不歧视双非二本生?

说句残酷的话&#xff0c;能对某一专业做出贡献&#xff0c;那么你的水平肯定是很高的。如果普通学生&#xff0c;普通本科的话可能很难做到这一点。这也是现在考研风气比较强的原因&#xff0c;一部分专业能力不突出的学生来选择深造3年。 对于基础较差想要考计算机研究生的同…...

Spring Boot:简化 Java 应用开发的艺术

Spring Boot 是一种用于快速开发、运行和管理 Java 应用程序的开源框架。它简化了基于 Spring 的应用程序的配置和部署&#xff0c;使得开发者能够更加专注于业务逻辑的实现。本文将介绍 Spring Boot 的核心特性、优势以及如何在项目中使用 Spring Boot。 一、核心特性 自动配…...

elasticsearch安装与使用(2)-基于term匹配的简单搜索引擎搭建

把一篇pdf论文解析后&#xff0c;放入es数据库中&#xff0c;建立倒排索引表&#xff0c;并实现简单搜索。 1、pdf论文解析(英文) 安装pdf解析包 pip install pdfminer.sixdef extract_text_from_pdf(filename, page_numbersNone, min_line_length1):从pdf文件中提取文字:pa…...

速盾:ddos防护与高防ip区别?

在网络安全领域&#xff0c;DDOS 防护和高防 IP 都是重要的防护手段&#xff0c;但它们之间存在着一些明显的区别。 DDOS 防护是一种针对分布式拒绝服务攻击的防御策略。它通过多种技术和方法来识别和抵御 DDOS 攻击。常见的 DDOS 防护手段包括流量清洗、连接限制、协议分析等。…...

Java中StringBulider详解

StringBuilder 是 Java 中一个用来创建可变字符串的类。与 String 类不同&#xff0c;StringBuilder 对象能够被修改&#xff0c;不会创建新的对象&#xff0c;因此在需要进行大量字符串操作时&#xff0c;StringBuilder 更高效。以下是 StringBuilder 的详细讲解。 创建 Stri…...

基于springboot高校就业招聘系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;就业咨询管理&#xff0c;毕业去向管理&#xff0c;简历管理&#xff0c;管理员管理&#xff0c;基础数据管理 辅导员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;就业咨询管理…...

嵌入式C语言编码规范要点

1.函数命名方法 骆驼命名法&#xff08;Camel&#xff09; 帕斯卡命名法&#xff08;&#xff08;pascal&#xff09;&#xff0c;也叫大驼峰命名法&#xff08;Upper Camel Case&#xff09; 匈牙利命名法 下划线命名法&#xff08;也称为蛇形命名法&#xff09; 详述见之前文…...

Python中的全局解释器锁:深入解析与应对策略

1. 引言 在Python的世界里&#xff0c;全局解释器锁&#xff08;GIL&#xff09;是一个经常被讨论的话题。它既是Python并发编程中的一个重要概念&#xff0c;也是许多开发者感到困惑的源头。本文将深入探讨GIL的工作原理、它对Python程序性能的影响 2. 全局解释器锁的历史背…...

【java计算机毕设】图书商城管理系统MySQL springboot vue html maven送文档

1项目功能介绍 【java计算机毕设】图书商城管理系统 Java Spring Boot vue HTML MySQL 赠送文档 PPT 2项目简介 系统功能&#xff1a; 图书商城管理系统包括管理员和用户两种角色。 管理员的功能包括在个人中心修改个人信息&#xff0c;以及在基础数据管理中管理会员等级类型和…...

文章 wordpress/seoyoon

我这个人走得很慢&#xff0c;但是我从不后退。----亚伯拉罕林肯前言&#xff1a; 本周我们主要了解Java中与面向对象的程序设计&#xff08;OOP&#xff09;有关的关键字。后面会逐一详细说明各个关键字的用法。其中特别注意的是this关键字&#xff0c;是Java中最常用的关…...

南通优普网站建设团队/百度图片识别搜索

相关操作学习记录备忘录 echo offrem 1、添加winrar压缩软件到系统环境变量&#xff0c;才可以压缩文件 rem 2、设置变量 不能有空格 "set a 123"(报错) "set a123"(正确) rem 3、强制删除文件夹 /s /q rem 4、重命名文件 第二个参数必须是文件…...

wordpress err_too_many_redirects/交换友情链接吧

【题目描述】https://www.luogu.com.cn/problem/P1048https://www.acwing.com/problem/content/description/425/【题目描述】 辰辰是个天资聪颖的孩子&#xff0c;他的梦想是成为世界上最伟大的医师。 为此&#xff0c;他想拜附近最有威望的医师为师。 医师为了判断他的资质&a…...

wordpress完全卸载教程/所有代刷平台推广

super 关键字 super super代表父类的引用&#xff0c;用于访问父类的属性、方法、构造器 1、基本语法&#xff1a; 访问父类的属性&#xff0c;但不能访问父类的private属性&#xff1a;【案例】super.属性名&#xff1b;访问父类的方法&#xff0c;不能访问父类的private方…...

深圳 网站 设计/推广网页

在某一次面试中&#xff0c;面试官问了我一个问题&#xff0c;他说&#xff0c;String str “1234”&#xff1b;如何在不使用 JDK自带方法的情况下&#xff0c;转换成 int i “123”。当时想法思路都有了&#xff0c;但是没写出来...... 本篇将讲述一下 String 与 int 两者之…...

案例模板我的网站/优化网站排名解析推广

偷渡用户直接更新是无法更新的 3.0.1.57 &#xff1a;https://www.123pan.com/s/VZiA-gvBVh 提取码:ig5D 3.0.2.68&#xff1a;https://pan.quark.cn/s/3e169c4e40d4 下载最新版安装包放到桌面&#xff0c;然后打开cmd&#xff0c;输入命令&#xff1a; start 文件路径 /I st…...