Java中的抽象与示例

用最简单的话来说,您可以将抽象定义为仅捕获与当前视角相关的Java对象的那些细节。

例如,HashMap存储一个键-值对。它为您提供了两种方法get()以及put()从地图存储和检索键值对的方法。实际上,这是您想要在应用程序中使用地图时所需的唯一信息。它是如何工作的,不需要使用它就知道。这是Java中很多抽象的例子

现实生活中的抽象示例为例,它可以是电视遥控器。您知道,当您按遥控器上的任何按钮时,电视上会应用某些功能,例如更改频道,更改音量等。您无需了解遥控器内部的工作原理,即可正常使用它。这是一个抽象的例子。

目录

1. oops中的抽象是什么?
2.抽象的类型
3.如何在Java中使用抽象
4.封装与抽象

1. oops中的抽象是什么?

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

在计算机科学中,抽象是这样的过程,在该过程中,数据和程序以与其含义(语义学)形式相似的表示形式进行定义,同时隐藏了实现细节。– 维基百科

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

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

2.抽象类型

通常,可以通过两种方式查看抽象:

  1. 数据抽象

    数据抽象是创建复杂数据类型并仅公开有意义的操作以与数据类型进行交互的方式,而将所有实现细节都隐藏在外部工作中。

    这种方法的好处在于可以随着时间的推移改善实施,例如解决性能问题。想法是这样的更改不应该对客户端代码产生任何影响,因为它们在抽象行为上没有任何区别。

  2. 控制抽象

    软件本质上是用任何编程语言编写的众多语句的集合。在大多数情况下,语句是相似的,并且多次重复出现。

    控件抽象是识别所有此类语句并将其作为工作单元公开的过程。我们通常在创建函数来执行任何工作时使用此功能。

3.如何用Java实现抽象?

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

在Java中,抽象是通过interfaces和实现的abstract classes接口使您可以完全抽象化实现,而抽象类也允许部分抽象。

数据抽象的范围从创建简单的数据对象到复杂的集合实现(例如 HashMap HashMap)HashSet

类似地,从定义简单的函数调用到完整的开源框架可以看出控件的抽象。控制抽象是结构化编程背后的主要力量。

3.1。Java抽象示例

让我们再看一个使用interfaces的Java抽象示例。在此示例中,我将创建各种报告,这些报告可以在应用程序生存期内随时按需运行。作为报表的使用者,一个类不需要知道报表的内部run(),只需执行此方法即可执行报表。

Report.java
import java.util.List;
public interface Report
{
    List<Object> run(ReportContext reportContext);
}
ReportContext.java
public class ReportContext {
    //fields
}
EmployeeReport.java
import java.util.List;
public class EmployeeReport implements Report
{
    @Override
    public List<Object> run(ReportContext reportContext) {
        //Custom Logic
        System.out.println("Executing employee report");
        return null;
    }
}
SalaryReport.java
import java.util.List;
public class SalaryReport implements Report
{
    @Override
    public List<Object> run(ReportContext reportContext) {
        //Custom logic
        System.out.println("Executing salary report");
        return null;
    }
}

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

Main.java
package com.how2codex.abstraction;
public class Main {
    public static void main(String[] args) {
        
        ReportContext reportContext = new ReportContext();
        //Populate context
        
        Report eReport = new EmployeeReport();
        eReport.run(reportContext);
        
        Report sReport = new EmployeeReport();
        sReport.run(reportContext);
    }
}

程序输出。

安慰
Executing employee report
Executing employee report

4.封装与抽象

Encapsulation是实现您所期望的abstraction

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

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

如果您想了解有关Java中的抽象类和接口的更多信息,请阅读我的下一篇探讨 Java中的接口和抽象类的文章

学习愉快!

saigon has written 1440 articles

Leave a Reply