2017-09-04 70 views
0

抽象是隱藏實現細節並僅向用戶顯示功能的過程。抽象如何幫助隱藏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

回答

1

抽象在你的代碼是抽象類本身:

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