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

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)

剩下的就是实现(和实现细节),特别是:类PNBSBI

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

假设您有一个银行比较引擎,由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