內(nèi)部類為什么可以引用外部類 為什么java需要getter/setter來獲取私有屬性?
為什么java需要getter/setter來獲取私有屬性?題主好,我來回答這個問題。首先,通過g/s來獲取私有屬性的值,是javaBean規(guī)范中的一條,主要是為了把對象私有的那點小秘密藏起來,避免被
為什么java需要getter/setter來獲取私有屬性?
題主好,我來回答這個問題。
首先,通過g/s來獲取私有屬性的值,是javaBean規(guī)范中的一條,主要是為了把對象私有的那點小秘密藏起來,避免被壞人看到。
舉例說明,張三是一個對象,張三的錢包是他的一個屬性,當然張三為了安全起見,會把錢包藏起來,只有自己能看到,也就是說,錢包是private的。張三還有個坑爹兒子:小三子。因為有了小三子,張三就需要提供一個供小三子領生活費的方法,而不是直接把錢包暴露給小三子。因為,直接暴露給小三子的話,會有以下幾個問題:
1、張三控制不住小三子拿錢,萬一拿去買了游戲皮膚就不好了;
2、張三有多少錢,都可以被小三子看到,但是很多時候,張三是不希望被小三子看到的(例如私房錢);
3、小三子長大以后給張三生活費,給了多少張三也不知道,就好像得了老年癡呆一樣。
總之,通過方法來操作屬性的根本目的就是為了保護自己的私有屬性,不被外部直接訪問。
java里一個私有的屬性如何在其他類里面進行訪問?
非私有方法間接訪問
既然是私有屬性就不建議直接訪問的,一般會提供方法來訪問私有屬性,這樣可以在方法中對屬性的訪問做一些控制。
反射直接訪問
當然也可以通過反射來直接訪問。
我們準備一個包含私有屬性的類
然后通過反射來訪問屬性,記得一定要加aField.setAccessible(true)這句代碼,不然就不能訪問私有屬性。
不加aField.setAccessible(true)
加了aField.setAccessible(true)
java如何證明私有屬性不能被繼承?
謝謝邀請回答。
public class A{
private int a
public int getAa(){return a}
}
public class B extends A{
public int getBa(){
return a //在這里編譯會報錯,因為私有的屬性繼承不到B來
}
public int getBa() {
return getAa()
}
}
其實這里說得無法繼承只是B無法訪問而已。屬性本身還是在B的對象里面的的。比如用getBa還是可以可以通過繼承來的A的公共方法getAa()把a取出來。