当前位置: 首页 > 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、抽象类

相关文章:

  • STM32项目分享:智能蓝牙手环
  • 攻防世界--杂项misc-2017_Dating_in_Singapore
  • 力扣爆刷第149天之TOP100五连刷(LRU、K个一组)
  • 专栏【汇总】
  • Ansible——shell模块
  • 面试题:如何避免索引失效?
  • LCD电子广告牌课程设计
  • R语言绘图 --- 桑基图(Biorplot 开发日志 --- 5)
  • Win10下CodeBlock实现socket TCP server/client
  • CSS--超出就显示滚动条并设置滚动条的样式
  • LeetCode 每日一题 2024/6/3-2024/6/9
  • Qt——窗口
  • RabbitMQ从入门到入土
  • 什么是校园抄表系统?
  • 基于SOA海鸥优化算法的三维曲面最高点搜索matlab仿真
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Android单元测试 - 几个重要问题
  • css选择器
  • gcc介绍及安装
  • gulp 教程
  • HTML-表单
  • Less 日常用法
  • Material Design
  • nodejs实现webservice问题总结
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • React 快速上手 - 07 前端路由 react-router
  • 第十八天-企业应用架构模式-基本模式
  • 分类模型——Logistics Regression
  • 给github项目添加CI badge
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 容器服务kubernetes弹性伸缩高级用法
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • No resource identifier found for attribute,RxJava之zip操作符
  • ionic入门之数据绑定显示-1
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #162 (Div. 2)
  • #DBA杂记1
  • #单片机(TB6600驱动42步进电机)
  • (2)nginx 安装、启停
  • (C语言)字符分类函数
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (排序详解之 堆排序)
  • (数据结构)顺序表的定义
  • (算法)求1到1亿间的质数或素数
  • (学习日记)2024.02.29:UCOSIII第二节
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .naturalWidth 和naturalHeight属性,
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .Net 6.0 处理跨域的方式
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .net framework4与其client profile版本的区别