第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

為什么要用Getter和Setter方法,而不是公開屬性

標(biāo)簽:
Java

大多数字段的访问都是通过Getter和Setter方法来间接访问,为什么不直接将字段设置为公开属性Public呢?答案在于前者的未来可能性。当我在Java语言编程中开始我的职业生涯时,我就对Getter和Setter感到困惑。为什么要这么写呢?为什么不直接用Public呢?这对我来说是个奇怪的语法。

我们知道,通过公共访问修饰符,类的一个字段对于任何包都是可访问的,并且使用getter/setter,我实际上正在做相同的事情——使字段私有化,而getter/setter方法是公共的,因此它可以被任何包访问。那么,下面属性name和value的区别是什么呢?
nameValue

慢慢地,我意识到了为什么我们使用Getter和Setter,以及为什么它们是重要的。使用Public属性与通过Getter和Setter公开它的主要区别在于保持对该属性的控制。如果你把一个字段公开,就意味着你可以直接访问调用方。然后,调用者可以做任何事情与你的领域,无论是有意或无意。例如,可以将字段设置为空值,如果在另一个方法中使用该字段,则该方法可能会因空指针异常而崩溃。

但是,如果你提供了一个Getter和Setter,你可以在完全控制的同时提供间接访问。设置值的惟一方法是通过Setter,通过Getter获得值,所以现在字段只有一个入口和一个出口点,因为Getter和Setter是允许代码块的方法,所以可以对它们进行验证检查!对象决定是否设置调用者值。这同样适用于Getter方法——您可以决定返回实际的引用或克隆它,并将其返回给调用者。

因此,Getter和Setter起到保险丝或断路器的作用,电流必须通过保险丝。如果发生故障,熔断器与主电路分离,电路是安全的。这里的概念是相同的。如果出现任何错误,Setter将不会将该值传递给类成员字段。读了解释之后,我知道你还有一个问题。

我理解,但一般来说,我们不写任何东西在Getter和Setter。我们只返回并设置字段,就像公开字段一样。那你为什么要说这些?为了回答这个问题,我说通过编写Getter和Setter,我们创建了一个用于将来添加任何验证方法的条款,目前,没有验证,但是如果将来出现任何错误,我们只是在Setter中添加验证逻辑。但是,当一个字段没有这样的验证约束时,为什么要麻烦写一个Getter和Setter?我可以简单地公开它。

根据我的理解,问题的症结在于避免使代码变得不必要的复杂。这就像当有人试图使他们的代码基础更加通用,适应于任何变化。虽然他/她所想到的大部分变化永远不会到来。因此,Getter和Setter不会使代码复杂,这将在你的代码中得到验证。

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消