java對(duì)象賦值給另一個(gè)對(duì)象 為什么java需要getter/setter來(lái)獲取私有屬性?
為什么java需要getter/setter來(lái)獲取私有屬性?好問(wèn)題。我來(lái)回答這個(gè)問(wèn)題。。例如,張三是一個(gè)對(duì)象,而張三的錢(qián)包是他的屬性之一。當(dāng)然,為了安全起見(jiàn),張三把錢(qián)包藏起來(lái),只有他自己才能看到。換句
為什么java需要getter/setter來(lái)獲取私有屬性?
好問(wèn)題。我來(lái)回答這個(gè)問(wèn)題。
。
例如,張三是一個(gè)對(duì)象,而張三的錢(qián)包是他的屬性之一。當(dāng)然,為了安全起見(jiàn),張三把錢(qián)包藏起來(lái),只有他自己才能看到。換句話說(shuō),他的錢(qián)包是私人的。張三還有一個(gè)兒子:小三子。有了小三子,張三需要給小三子提供一個(gè)領(lǐng)取生活費(fèi)的途徑,而不是直接把錢(qián)包暴露給小三子。如果你長(zhǎng)大后沒(méi)有從小資那里得到很多錢(qián),你就會(huì)從小資那里得到很多錢(qián)我不知道我有多少份,就像我得了老年癡呆癥一樣。
總之,通過(guò)方法操作屬性的根本目的是保護(hù)自己的私有屬性不被外部直接訪問(wèn)。
java里一個(gè)私有的屬性如何在其他類(lèi)里面進(jìn)行訪問(wèn)?
由于它是私人財(cái)產(chǎn),因此不建議直接訪問(wèn)它。通常,提供了訪問(wèn)私有屬性的方法。這樣,可以在方法中控制對(duì)屬性的訪問(wèn)。
當(dāng)然,也可以通過(guò)反射直接訪問(wèn)。
我們準(zhǔn)備一個(gè)包含私有屬性的類(lèi)
然后通過(guò)反射訪問(wèn)屬性。記住添加aField.setAccessible可訪問(wèn)(true)此代碼,否則無(wú)法訪問(wèn)私有屬性。
不aField.setAccessible可訪問(wèn)(正確)
添加aField.setAccessible可訪問(wèn)謝謝你的邀請(qǐng)。
Public class a{
private int a
Public int getaa(){return a}
}
Public class B擴(kuò)展了a{
Public int getba(){
return a//編譯時(shí)會(huì)報(bào)告一個(gè)錯(cuò)誤,因?yàn)樗接袑傩圆荒軓腂中繼承
}
Public int getba(){
return getaa(),據(jù)說(shuō)它不能被繼承,但是B不能訪問(wèn)它。屬性本身仍然在B的對(duì)象中。例如,使用getba,可以通過(guò)繼承的公共方法getaa()獲得a。