Tar*_*alh 4 java abstract-class abstraction
抽象是隐藏实现细节并仅向用户显示功能的过程。
另一种方式,它只向用户显示重要的东西并隐藏内部细节。所以下面是一个创建抽象类并覆盖抽象方法的示例。但我不明白的是它是如何隐藏实现细节的?
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()+" %");
}
}
Run Code Online (Sandbox Code Playgroud)
syn*_*gma 12
该抽象在你的代码是抽象类本身:
abstract class Bank {
abstract int getRateOfInterest();
}
Run Code Online (Sandbox Code Playgroud)
剩下的就是实现(和实现细节),特别是:类PNB和SBI
但我不明白的是它是如何隐藏实现细节的?
假设您有一个银行比较引擎,由BankComparisonEngine类表示。它只会将一个Bank(抽象类)作为参数,然后获取其利率并将其保存到其内部数据库中,如下所示:
class BankComparisonEngine {
public void saveInterestRateOf(Bank bank) {
int rate = bank.getRateOfInterest();
// Save it somwehere to reuse later
}
}
Run Code Online (Sandbox Code Playgroud)
实现细节是如何准确隐藏的?好吧,BankComparisonEngine不知道getRateOfInterest()具体实现的方法是如何Bank工作的(即:PNB.getRateOfInterest()或被SBI.getRateOfInterest()实现)。它只知道它是一个返回一个int(并且它应该返回一个利率)的方法。该实施细则是扩展的具体类藏在里面abstract class Bank。
| 归档时间: |
|
| 查看次数: |
4906 次 |
| 最近记录: |