行业资讯 2025年08月6日
0 收藏 0 点赞 606 浏览 1964 个字
摘要 :

文章目录 1. OOP 中的抽象? 2. 抽象类型 2.1. 数据抽象 2.2. 控制抽象 3. Java中如何实现抽象? 3.1. 使用接口进行抽象 4. 封装和抽象的区别 在Java中,抽象仅捕……




  • 1. OOP 中的抽象
  • 2. 抽象类型
    • 2.1. 数据抽象
    • 2.2. 控制抽象
  • 3. Java中如何实现抽象?
    • 3.1. 使用接口进行抽象
  • 4. 封装和抽象的区别

在Java中,抽象仅捕获与当前上下文相关的类细节。例如,java.util.Map存储键值对,并公开两个方法get()和put()来存储和检索键值对。实际上,这是我们在想要在应用程序中使用Map时唯一需要的信息。关于Map内部如何工作,我们并不需要了解就能使用它。这在Java中非常典型的是抽象的例子。

再举一个更贴近生活的抽象例子,可以是电视遥控器。你知道当你在遥控器上按下任何按钮时,会在电视上执行某些功能,比如更改频道、调整音量等。你不需要知道遥控器内部的工作原理,就能正确地使用它。这是一个抽象的例子。

1. OOP 中的抽象?

在面向对象的编程理论中,抽象涉及定义代表抽象“参与者”的对象,这些对象可以执行工作,报告并更改其状态,并与系统中的其他对象“通信”。

任何编程语言中的抽象都有多种方式。从创建子程序到定义进行低级语言调用的接口都可以看出。

一些抽象试图通过完全隐藏它们所构建的抽象(例如设计模式)来限制程序员所需概念的广度。

2. 抽象类型

通常抽象可以通过两种方式来看待:

  • 数据抽象
  • 控制抽象

2.1. 数据抽象

数据抽象是创建复杂数据类型并仅公开有意义的操作以与数据类型交互,同时对外部工作隐藏所有实现细节的方法。

这种方法的好处在于能够随着时间的推移改进实施,例如解决性能问题(如果有)。这个想法是,此类更改不应影响客户端代码,因为它们不涉及抽象行为的差异。

2.2. 控制抽象

任何软件由许多语句组成,这些语句是用任何编程语言编写的。大多数情况下,语句是相似的,并且在多个地方重复出现。

控制抽象是识别所有这些语句并将其公开为一个工作单元的过程。当我们创建执行任何工作的函数时,通常会使用此功能。

3. Java中如何实现抽象?

由于抽象是面向对象编程实践的核心原则之一,并且 Java 遵循所有 OOP 原则,因此抽象是 Java 语言的主要构建块之一。

在Java中,抽象是通过接口和抽象类来实现的。接口允许您完全抽象实现,而抽象类也允许部分抽象。

  • 数据抽象涵盖从创建简单的数据对象到复杂的集合实现(例如HashMap或HashSet.
  • 同样,控制抽象可以从定义简单的函数调用到完整的开源框架来看。控制抽象是结构化编程背后的主要力量。

3.1. 使用接口进行抽象

让我们看看Java 中使用接口进行抽象的又一个示例。在此示例中,我创建了各种报告,这些报告可以在应用程序的生命周期内随时按需运行。作为报表的使用者,类不需要知道报表 run() 的内部结构,它只需要执行这个方法,报表就会被执行。

public interface Report {

    List<Object> run(ReportContext reportContext);
}
public class ReportContext {
    //属性
}
public class EmployeeReport implements Report {

    @Override
    public List<Object> run(ReportContext reportContext) {
    
        //自定义逻辑
        System.out.println(\"执行员工汇报\");
        return null;
    }
}
public class SalaryReport implements Report {

    @Override
    public List<Object> run(ReportContext reportContext) {
        //自定义逻辑
        System.out.println(\"执行工资汇报\");
        return null;
    }
}

现在用方法执行报告run()

public class Main {
    public static void main(String[] args) {

        ReportContext reportContext = new ReportContext();
        //给reportContext赋值 

        Report eReport = new EmployeeReport();
        eReport.run(reportContext);

        Report sReport = new SalaryReport();
        sReport.run(reportContext);
    }
}

程序输出:

执行员工汇报
执行工资汇报

4. 封装和抽象的区别

封装是对所需抽象的实现

抽象更多的是隐藏实现细节。在Java中,抽象是通过抽象类和接口来实现的。

封装是将实现(代码)及其操作的数据(变量)包装在同一个类中。Java 类是封装类的一个示例,其中所有实例变量都是私有的,并且只有类中的方法可以操作这些变量。

归属教程 Java基础教程

文章目录 前言  第1章 Java语言基础 第2章 流程控制语句 第3章 面向对象编程 第4章 Java 字符 […]

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9129.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号