当前位置: 首页 > 知识库问答 >
问题:

抽象如何帮助隐藏Java中的实现细节?

邹华皓
2023-03-14

抽象是隐藏实现细节并仅向用户显示功能的过程。

另一种方式是,它只向用户显示重要的东西,隐藏内部细节。下面是一个创建抽象类并重写抽象方法的示例。但我不明白的是,它是如何隐藏实现细节的?

abstract class Bank
{    
   abstract int getRateOfInterest();    
} 

class SBI extends Bank
{    
 int getRateOfInterest()
  {
   return 7;
   }    
  }

class PNB extends Bank  
{    
 int getRateOfInterest()
   { 
    return 8;
   }    
 }    

class TestBank{    
public static void main(String args[])
{    
 Bank b;   
 b=new SBI();  
 System.out.println("Rate of Interest is: "+b.getRateOfInterest()+" %");    
 b=new PNB();  
 System.out.println("Rate of Interest is: "+b.getRateOfInterest()+" %");    
 }
 }     

共有1个答案

松建本
2023-03-14

代码中的抽象就是抽象类本身:

abstract class Bank {    
   abstract int getRateOfInterest();    
} 

其余部分是实现(以及实现细节),具体为:类PNBSBI

但我不明白的是,它是如何隐藏实现细节的?

假设您有一个银行比较引擎,它由BankComparisonEngine类表示。它只需将bank(抽象类)作为参数,然后获取其利率并将其保存到内部数据库中,如下所示:

class BankComparisonEngine {
  public void saveInterestRateOf(Bank bank) {
    int rate = bank.getRateOfInterest();
    // Save it somwehere to reuse later 
  }
}

实现细节是如何准确隐藏的?嗯,BankComparisonEngine不知道Bank的具体实现的getRateOfInterest()方法是如何工作的(即:pnb.getRateOfInterest()SBI.getRateOfInterest()是如何实现的)。它只知道它是一个返回int的方法(并且它应该返回利率)。实现细节隐藏在扩展抽象类库的具体类中。

 类似资料:
  • 有些人将抽象定义为: 抽象是通过在基本功能上提供一个层来隐藏实现细节。 对对象的用户隐藏实现细节不是封装的一部分吗? 假设动物类有函数ate(),那么给对象的用户提供这个接口是封装还是抽象?或者提供函数名使用是抽象,方法实现部分的隐藏是封装。 我真的很困惑,因为在很多地方它是抽象的,很多人说实现细节隐藏是封装? 在这个问题中,答案是: 抽象=外部对象;封装(通过信息隐藏实现)=对象内部。 那么,这

  • 我已经思考了很长时间关于“隐藏在Java中的实现”。嗯,我知道这是不可能的(至少在理论上),但是有一些库(例如ZIP文件)需要隐藏一些代码(因为如果任何人都能看到代码,他们将能够在不知道密码的情况下打开fe。zip文件)。 我知道有一种方法可以创建web服务,但使用某些库的应用程序可能是离线应用程序,因此web服务不可能对所有内容都适用。 你能帮我把它弄明白吗?

  • 我浏览了很多帖子,但没有抓住要点。 我们能不能说:抽象=封装数据隐藏 或者不止这些!! 谢谢

  • 问题内容: 是否可以在Java中定义私有抽象类?Java开发人员将如何编写如下的构造? 问题答案: 您不能使用Java中的方法。 当方法为时,子类无法访问它,因此它们无法覆盖它。 如果您想要类似的行为,则需要方法。 这是一个编译时错误,如果包含该关键字的方法声明中还包含关键字的任意一个,,,,,或。 和 子类不可能实现方法,因为方法不是子类继承的。因此永远不能使用这种方法。 资源: JLS-8.4

  • 我最近刚刚开始学习如何使用swing,并且一直在遵循我在网上找到的教程。我基本上遵循了“逐字逐句”的教程,但我发现了一个错误: 记分板不是抽象的,并且不会覆盖ActionListener中的抽象方法actionPerformed(ActionEvent) 所以我的问题是,如果类不是抽象的,我如何将ActionListener实现到我的类(ScoreBoard)中? 下面是整个代码:(因为我不知道问

  •   抽象用于向用户隐藏函数的内部功能。他们可以与函数交互并生成结果,但不知道结果是如何生成的。   简单来说,抽象就是用来对用户隐藏不相关的数据,以降低程序的复杂度。 在 Python 中借助 ABC 模块,我们可以实现抽象。   抽象类也可以作为其他类的基石,因为你不能为抽象类创建对象,所以访问元素的唯一方法是使用继承。