2013-05-04 115 views
-3

我不太確定爲什麼在這種情況下我應該使用吸氣器。請看下面的例子:Java中的吸氣器

public class Coin { 

    private String sideUp; 


    Coin() { 
     sideUp = "heads"; 
    } 

    protected String getSideUp() { 
     return sideUp; 
    } 


    protected void toss(String sideUp) { 
     // some code to randomly decide heads or tails 
     this.sideUp = sideUp; 
    } 


    public static void main(String[] args) { 
     Coin coin = new Coin(); 
     System.out.printf("Initial side %s\n", coin.sideUp); 
     // System.out.printf("Initial side is %s\n, coin.getSideUp); 

     coin.toss(coin.sideUp); 
     // coin.toss(coin.getSideUp); 

     System.out.printf("Side Up is %s\n", coin.sideUp); 
     // System.out.printf("Side Up is is %s\n, coin.getSideUp); 
    } 
} 

是什麼coin.SideUpcoin.getSideUp之間的區別?這是不是在這種情況下的不同方法的問題?

+0

'coin.sideUp'不會給你'sideUp'的價值,這是因爲你將它聲明爲'private'變量。 'private'變量只能在它們定義的類中訪問。因此,對於這種特殊情況,您需要一個「getter」方法。 – chRyNaN 2013-05-04 21:56:13

回答

2

在這種情況下使用吸氣劑可防止外部類別通過toss方法更改其值。在這種情況下,這是一個很好的決定,因爲它明確指出只能通過使用toss來更改它。但是,如果這是唯一的目的,那麼爲什麼不讓toss返回正確的String

+0

感謝您的快速回答。所以,一般來說,使用getter訪問這個值是一個好習慣,對嗎?感謝您的建議,但我特意編寫了此代碼以澄清有關getter的問題。 – KurodaTsubasa 2013-05-04 21:36:12

+0

@ user2115641是的,使用getter和setter通常是很好的做法,以防萬一您想要更改實現。它也可以告訴你關於班級應該如何使用的一些事情,比如在這種情況下。 – nullptr 2013-05-04 21:38:26