屬性和公用變數的本質區別 c

2021-04-26 06:34:12 字數 960 閱讀 3299

問題為:public class myclass

set }}

我是個初學者。請問 myclass.a 和 myclass.getval 不是一樣用麼?有什麼本質上的區別,類屬性的概念有點多餘呀?請前輩指點一下。謝謝

答案:首先,你的myclass.a和myclass.getval使用方法是錯的,a和getval都是非靜態的,雖然他們是公有的,但需要例項化myclass後才能使用,即使你表達的意思是new myclass().a,但作為程式設計師必須要持嚴謹的態度,盡量少出錯,為了規範,公有資料和操作成員的名字第乙個字母一般是大寫(你應該也知道,否則你就不會寫a和_b)。

正題:a是資料成員(變數),getval是操作成員(特殊的方法)

乙個變數只能用來儲存資料

乙個方法只能用來對資料成員的進行操作

而且你的問題也很牽強

你應該這麼問:

public string b

public string getval

set}

至少我覺得這樣才符合你的本意,這樣才涉及到了真正的資料安全,因為b是個公有變數,在類的外部可以任意更改,為了防止因使用者任意更改

而導致程式出現異常,就要對b進行限制,所以就出現了屬性,其實自定義變數已經預設實現了屬性,只是簡答的讀寫而已,我們定義的屬性要在讀寫的基礎上加上更多限制,以後你學的多了就會發現,很多東西都是為了資料安全而加入的,說白了就是限制,例如介面,介面中的方法你必須(注意是必須,強制性的)要實現

對你的問題我舉個例子:

比如銀行的自動取款機。

你在取錢的時候最少取多少,做多取多少都有限制,這就是用屬性實現的,當然實現方法也不僅僅只有屬性,你還可以在使用者輸入的時候來檢查,但這樣寫維護的時候會非常困難,因為你要到類的外部去找這個檢查過程。

其實單純寫程式一點不難,難得是如何設計程式,使**簡潔易讀而效率又最高,如何保證程式的安全執行(也就是資料安全),建議你在學到一定程度的時候買一本程式設計的書看看,絕對大有好處

OC 和 C 的本質區別

oc使用訊息結構 messaging structure c使用函式呼叫 function calling 訊息結構 執行時所執行的 由執行環境決定 動態繫結 函式呼叫 執行時所執行的 由編譯器決定 oc的重要工作都有 執行期元件 runtime component 而非編譯器完成,包括 oc物件導...

指標變數和非指標變數的本質區別

指標變數本質上是指乙個儲存了位址的 乙個 變數。因此無論哪種型別的指標,變數占用的位址是固定的,32位cpu則為4bytes,16為cpu則為2bytes。而變數占用的記憶體空間直接和變數型別相關,因為變數需要保持和該型別所有的資料。下面看乙個例子 include typedef struct st...

Spark和MapReduce的本質區別

1.mr只能做離線計算,如果實現複雜計算邏輯,乙個mr搞不定,就需要將多個mr按照先後順序連成一串,乙個mr計算完成後會將計算結果寫入到hdfs中,下乙個mr將上乙個mr的輸出作為輸入,這樣就要頻繁讀寫hdfs,網路io和磁碟io會成為效能瓶頸。從而導致效率低下。2.既可以做離線計算,有可以做實時計...