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

时间:2017-09-04 16:36:31

标签: 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()+" %");    
 }
 }     

1 个答案:

答案 0 :(得分:3)

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

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不知道getRateOfInterest()具体实现的Bank方法是如何工作的(即:PNB.getRateOfInterest()SBI.getRateOfInterest()已实现)。它只知道它是一个返回int的方法(它应该返回一个利率)。 实现细节隐藏在扩展abstract class Bank的具体类中。