亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

吸氣劑和吸氣劑的目的是什么?

吸氣劑和吸氣劑的目的是什么?

慕容森 2019-12-25 11:10:58
我讀過一些書Java,說為諸如x和的變量創建setter和getter很好y。例如:public int getX(){    return x;}public void setX(int x){    this.x = x;}但這有什么區別呢?...(shape.x)...   // basically getX()和shape.x = 90;    // basically setX()如果二傳手和消氣手更好,您能告訴我哪些實際問題會出現?
查看完整描述

3 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

使用getter和setter函數可以進行約束和封裝??梢哉fx是半徑。shape.x = -10沒有太大意義。另外,如果有人嘗試設置非法值,則可以打印錯誤,設置默認值或什么都不做。


優良作法是將成員變量設為私有,這樣程序就不能直接使用它們對其進行修改。


查看完整回答
反對 回復 2019-12-25
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

很多人提到封裝實現的細節,這對我來說是在類中使用getter和setter的最大原因。這樣,您還可以獲得許多其他好處,包括能夠一時興起地拋出并替換實現,而無需接觸使用類的每段代碼。在一個小型項目中,這并不是什么大好處,但是如果您的代碼最終成為一個使用良好的(內部或公共)庫,那么它將是一個巨大的好處。

一個具體的例子:數學中的復數。有些語言將它們作為一種語言或框架功能,而另一些則沒有。我將在這里以可變的類為例,但是它很容易不變。

復數可以寫在表單上,a + bi具有實部和虛部,非常適合[gs]etRealPart[gs]etImaginaryPart。

但是,在某些情況下,更容易推斷出極性形式re^(iθ)[gs]etRadius(r)和[gs]etAngle(θ)的復數。

您還可以公開類似[gs]etComplexNumber(realPart, imaginaryPart)和的方法[gs]etComplexNumber(radius, angle)。根據參數類型,這些名稱可能需要也可能不需要不同的名稱,但是類的使用者可以根據需要使用它們。

兩種形式可以互換。您可以很容易地從一種轉換為另一種,因此該類用于內部存儲的形式與該類的使用者無關。但是,消費者可以使用任何一種形式。如果您選擇a + bi形式作為內部表示形式,并使用字段而不是getter和setter公開該形式,則不僅迫使類消費者使用該形式,而且以后也無法輕松地改變主意并用以下形式替換內部表示形式: re ^(iθ),因為事實證明在特定情況下更容易實現。您必須使用已定義的公共API,該API要求使用特定的字段名稱專門公開實部和虛部。


查看完整回答
反對 回復 2019-12-25
  • 3 回答
  • 0 關注
  • 359 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號