抽象如何帮助隐藏Java中的实现细节?
问题描述:
抽象是隐藏实现细节并仅向用户显示功能的过程。抽象如何帮助隐藏Java中的实现细节?
另一种方式,它只显示用户的重要内容并隐藏内部细节。 下面是一个抽象类被创建并且抽象方法被覆盖的例子。但是我不明白的是它如何隐藏实现细节?
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()+" %");
}
}
答
的抽象在你的代码是抽象类本身:
abstract class Bank {
abstract int getRateOfInterest();
}
,其余是实施(及实施细则),具体如下:类PNB
和SBI
但我不明白的是它如何隐藏imp详细说明?
想象一下,您有一个银行比较引擎,它由BankComparisonEngine
类表示。这将只取一Bank
(抽象类)作为参数,然后得到它的利率,并保存到其内部数据库,就像这样:
class BankComparisonEngine {
public void saveInterestRateOf(Bank bank) {
int rate = bank.getRateOfInterest();
// Save it somwehere to reuse later
}
}
如何实现的细节隐藏到底是什么?那么,BankComparisonEngine
不知道如何getRateOfInterest()
方法的具体实施Bank
作品(即:PNB.getRateOfInterest()
或SBI.getRateOfInterest()
被实施)。它只知道这是一种返回int
(并且它应该返回利率)的方法。 实现细节隐藏在扩展为abstract class Bank
的具体类中。
+0
此外,当我们使用导入的库对象和他们的方法,我们不担心这些方法的实现,我们只是获得了使用的功能。因此,通过面向对象,我们得到了没有内部细节的重要事情。那是抽象! – RafatMunshi
可能重复的[抽象VS信息隐藏VS封装](https://stackoverflow.com/questions/24626/abstraction-vs-information-hiding-vs-encapsulation) – RafatMunshi