抽象如何帮助隐藏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()+" %");  
} 
}  
+0

可能重复的[抽象VS信息隐藏VS封装](https://stackoverflow.com/questions/24626/abstraction-vs-information-hiding-vs-encapsulation) – RafatMunshi

抽象在你的代码是抽象类本身:

abstract class Bank {  
    abstract int getRateOfInterest();  
} 

,其余是实施(及实施细则),具体如下:类PNBSBI

但我不明白的是它如何隐藏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