私有變量是什么意思 為什么java需要getter/setter來(lái)獲取私有屬性?
為什么java需要getter/setter來(lái)獲取私有屬性?好問(wèn)題。我來(lái)回答這個(gè)問(wèn)題。。例如,張三是一個(gè)對(duì)象,而張三的錢包是他的屬性之一。當(dāng)然,為了安全起見,張三把錢包藏起來(lái),只有他自己才能看到。換句
為什么java需要getter/setter來(lái)獲取私有屬性?
好問(wèn)題。我來(lái)回答這個(gè)問(wèn)題。
。
例如,張三是一個(gè)對(duì)象,而張三的錢包是他的屬性之一。當(dāng)然,為了安全起見,張三把錢包藏起來(lái),只有他自己才能看到。換句話說(shuō),他的錢包是私人的。張三還有一個(gè)兒子:小三子。有了小三子,張三需要給小三子提供一個(gè)領(lǐng)取生活費(fèi)的途徑,而不是直接把錢包暴露給小三子。因?yàn)?,直接接觸小三子,會(huì)出現(xiàn)以下問(wèn)題:
1。張三控制不住小三子的拿錢,萬(wàn)一他買了游戲,他的皮膚會(huì)變差的。張三有多少錢可以被小三子看到,但很多時(shí)候,張三不想被小三子看到(比如私房錢)。小三子長(zhǎng)大后,他會(huì)給張三生活費(fèi)和錢,我不知道我有多少本,就像我得了老年癡呆癥一樣。
總之,通過(guò)方法操作屬性的根本目的是保護(hù)自己的私有屬性不被外部直接訪問(wèn)。
既然Java反射可以訪問(wèn)和修改私有成員變量,那封裝成private還有意義么?
我很高興回答您的問(wèn)題。
一般來(lái)說(shuō),隱私只是一種協(xié)議。
C 中如何訪問(wèn)局部對(duì)象的私有變量?
如果您想訪問(wèn)自己的本地對(duì)象,您將按約定向本地對(duì)象添加get和set方法,并通過(guò)公共方法訪問(wèn)本地變量。
如果是鏈接庫(kù),訪問(wèn)此變量時(shí)需要非常小心。看過(guò)C對(duì)象模型的學(xué)生可能知道,通過(guò)指向?qū)ο髮?shí)例的指針并添加一定的偏移值,可以找到這個(gè)私有變量的存儲(chǔ)位置。當(dāng)然,在不同的平臺(tái)上,偏移量可能不一樣。你需要在內(nèi)存中轉(zhuǎn)儲(chǔ)內(nèi)容。