2016-11-25 82 views
1

在學習Java時偶然發現了Encapsulation。對使用getter和setter的利益,根據https://www.tutorialspoint.com/java/java_encapsulation.htm是:Java - 使用Getters&Setters時更改數據類型

「一類的用戶不知道這個類是如何存儲數據的類可以改變一個字段和用戶的數據類型。類不需要改變他們的任何代碼。「

但我不太確定這是什麼意思。這是否意味着一個:

private String name; 

可以改爲:

private int name; ? 

我會很感激,如果有人可以給關於向這樣的一個例子。

+0

你的意思是,如果用戶輸入整數值,而不是字符串會發生什麼事的任何類? – SMW

+0

是的。這就是我認爲的意思。但是我發現我能做的一件事是將非靜態變量改爲靜態變量。我仍然不確定我可以用它來做什麼。 –

回答

0

是,例如,如果僅存在可能的名字固定數量的,那麼也許類將改變從:

class Thing 
{ 
    private String m_name; 
    .... 
    public String getName() 
    { 
     return m_name; 
    } 
    ... 
} 

class Thing 
{ 
    private static String[] POSSIBLE_NAMES = ... 

    private int m_nameIndex; 
    .... 
    public String getName() 
    { 
     return POSSIBLE_NAMES[m_nameIndex]; 
    } 
    ... 
} 

的一點是,在吸氣表明,該對象有一個名稱,並可以在您詢問時告訴您,但該對象可以自由存儲或計算該名稱,但它喜歡。

+0

感謝您的示例。但我對Java仍然陌生,並不太瞭解它。所以你可以添加另一個變量並改變getter內部的任何變量? –

+0

你可以在吸氣劑中做任何你想要的,而不需要改變任何調用它的代碼。 –

0

一個類可以改變一個字段的數據類型

我覺得這是在使用我們私人的訪問修飾符錯誤thing.its不是數據類型及其訪問修飾符變量可見的類只要。公共方法是來自外部java世界的這個類的字段的接入點。通常這些方法被稱爲getter和setter。因此想要訪問的變量應該通過這些干將訪問它們和setters.no需要改變private String name;public String name;

相關問題