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

為了賬號安全,請及時綁定郵箱和手機立即綁定

setter也可以改變屬性值,那為什么不直接改,而是用setter方法改呢?

封裝是為了不讓人們隨便改變屬性值,可是為什么還要用set方法去改變呢,這樣不是和原來沒有什么區(qū)別了么?這是為什么呢?

正在回答

4 回答

public?class?Demo{
????private?int?age;
????public?void?setAge(int?age){
????????this.age=age;
}
}

比如說這個Demo類,封裝了一個age屬性。

Demo d=new Demo();

不可以通過d.age訪問


但是可以通過d.setAge方法進行修改值


面向對象的三大特征 就是封裝 繼承和多態(tài)

借用百科的解釋

封裝是把過程和數(shù)據(jù)包圍起來,對數(shù)據(jù)的訪問只能通過已定義的接口。面向對象計算始于這個基本概念,即現(xiàn)實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。封裝是一種信息隱藏技術,在java中通過關鍵字private實現(xiàn)封裝。什么是封裝?封裝把對象的所有組成部分組合在一起,封裝定義程序如何引用對象的數(shù)據(jù),封裝實際上使用方法將類的數(shù)據(jù)隱藏起來,控制用戶對類的修改和訪問數(shù)據(jù)的程度。

已經(jīng)對封裝解釋的很詳細了,由于是私有的,不可以被繼承。

① 對象的數(shù)據(jù)封裝特性徹底消除了傳統(tǒng)結構方法中數(shù)據(jù)與操作分離所帶來的種種問題,提高了程序的可復用性和可維護性,降低了程序員保持數(shù)據(jù)與操作內容的負擔。

②對象的數(shù)據(jù)封裝特性還可以把對象的私有數(shù)據(jù)和公共數(shù)據(jù)分離開,保護了私有數(shù)據(jù),減少了可能的模塊間干擾,達到降低程序復雜性、提高可控性的目的。


0 回復 有任何疑惑可以回復我~
#1

beyondlxb 提問者

非常感謝!慕友實在太給力了。
2015-07-15 回復 有任何疑惑可以回復我~

getter和setter的作用,是對類內部數(shù)據(jù)的保護。如果能直接訪問該類的屬性,那么就存在屬性不可控的情況,而用方法來修改數(shù)據(jù),可以在方法中添加一些保護措施,這樣就能保護屬性值了。個人觀點,僅供參考。

1 回復 有任何疑惑可以回復我~
  1. 間接操作變量,可以限制變量的使用條件,防止非法使用。

  2. 第二個之所以是setter和getter是javabean的一個規(guī)范,可讀性好,你完全可以用setABC()都可以實現(xiàn)封裝。

    比如:

public?void?setAge(int?age)
{
??if(age>0?&&?age<100)
??{
??this.age?=?age;
??}
??else
??{
???//輸入的年齡無效
??}
}


1 回復 有任何疑惑可以回復我~

age是個私有屬性,要修改age的值只能通過setter去修改,如果要使用d.age的話,需要把age改成public的

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

setter也可以改變屬性值,那為什么不直接改,而是用setter方法改呢?

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號