要在公有類而非公有域中使用訪問方法

2021-10-01 11:38:55 字數 431 閱讀 3333

class test
class user
如上這樣的類絕不應該聲名為public,因為一旦聲名為了public,該類中所有的資料就全部暴露出來,並且無法改變它的資料表示法,也無法強加任何約束條件,當被訪問的時候,無法採取任何輔助措施,這麼多問題,歸結原因就是因為如果類宣告不當,那麼可能會將整個資料域全部暴露給客戶端。雖然,對於可變類來說,應該用包含私有域和僅有設定方法的類代替:

class user 

public void setold(integer old)

public string getname()

public void setname(string name)

}

那麼,對類中的資料域的訪問級別應該如何設計?

第14條 在公有類中使用訪問 方法而非公有域

class point 如上面point類的資料域是可以直接被訪問的,這樣的類沒有提供封裝。如果不改變api,就無法改變它的資料表示法 比如,使用乙個比double更高精度的類來表示x和y 也無法強加任何約束條件 比如以後我們可能會希望x和y不會超過某個值 class point public do...

C 類繼承 公有繼承

使用公有繼承,可以達到如下的特性 tabtenn1.h ifndef tabtenn1 h define tabtenn1 h include using std string class tabletennisplayer 基類宣告 void resettable bool v class rat...

Person類和Teacher類(公有派生)

問題描述 從類person中派生出乙個teacher類,新增的屬性有專業 specialty 職稱 position 和主講課程 majorcourse 一門,並為這些屬性定義相應的方法。person類的設計如下,空白處請補充完整。class person char getname char get...