封裝 C 描敘 使用屬性的好處

2021-06-15 21:10:25 字數 2336 閱讀 4997

緒論

對於乙個具有豐富結構化程式設計經驗的程式設計師來說,物件導向的程式設計可能會給他們帶來非常不自然的感覺。封裝是實現物件導向程式設計的第一步,封裝就是將資料或函式等集合在乙個個的單元中(我們稱之為類)。被封裝的物件通常被稱為抽象資料型別。在本文中,我們將詳細學習屬性的特性。

封裝的意義

封裝的意義在於保護或者防止**(資料)被我們無意中破壞。在物件導向程式設計中資料被看作是乙個中心的原素並且和使用它的函式結合的很密切,從而保護它不被其它的函式意外的修改。

封裝提供了乙個有效的途徑來保護資料不被意外的破壞。相比我們將資料(用域來實現)在程式中定義為公用的(public)我們將它們(fields)定義為私有的(privat)在很多方面會更好。私有的資料可以用兩種方式來間接的控制。下面我們看一些c#例子來學習這兩種方法用以封裝資料。第一種方法,我們使用傳統的存、取方法。第二種方法我們用屬性(property)。無論我們使用哪種的方法,我們的目標是在使用資料的同時不能使它受到任何的破壞和改變。

用傳統的讀、寫方法封裝

讓我們來看乙個例子有乙個類department,為了操縱這個類中的資料(string departname)我們定義了乙個讀方法和乙個寫方法。

using system;

public class department

//寫方法

public void setdepartname( string a)}

通過上面的方法,我們可以保護私有資料不被外部程式所破壞。現在我們使用兩個不同的方法來寫和讀資料

public static int main(string args)

在上面的例子中,我們不能直接訪問類department的例項d中的私有資料(string departname),我們只能通過這兩個方法來訪問。

用屬性來實現封裝

屬性是c#引入的一種語言成分,只有很少的語言支援屬性。通過對屬性的讀和寫來保護類中的域。第一種方法體身也是一種好的方式,但用屬性來實現封裝會更方便。

現在我們來看乙個例子:

using system;

public class department 

set }}

public class departmentmain

",d.departname);

return 0;} }

通過上面的例子,我們可以看到如何通過屬性來實現封裝。屬性具有兩種操作get和set。get用來返回屬性域的值。set通過value這個變數來給屬性域賦值。屬性可以設為唯讀的(read-only)。這只需屬性只具有乙個set操作。

唯讀屬性

using system;

public class readdepartment 

public string departname}}

public class readdepartmain

",d.departname);

return 0;} }

在上面的例子中我們看到了如何來實現乙個唯讀的屬性。類readdepartment擁有乙個departname屬性只實現了get操作。它省略了寫操作。這個特別的類擁有乙個構造器,用來接受乙個字串變數。類readdepartmain中的main方法建立了乙個新的物件d。對像d的例項使用了類readdepartment帶有乙個字串引數的構造器。因為上面的屬性是唯讀的,所以我們不給給域departname賦值並且我們只側讀取此域中的值。當然屬性也可以是只寫的(write-only),這只需屬性只具有乙個get操作。

只寫屬性

using system;

public class writedepartment 

",departname);}}

}public class writedepartmain }

在上面的例子中我們看到了如何來實現乙個只寫的屬性。類writedepartment擁有乙個departname屬性只實現了set操作。它省略了讀操作。

總結

封裝是朝著物件導向程式設計邁出的第一步。本文向您展示了一些封裝的知識。用傳統的讀、寫兩種方法可以實現封裝,另一種實現封裝的方法是使用屬性。使用屬性的好處在於物件的使用者可以用一條語句來操作內部的資料。

實體類的屬性使用封裝類的好處

以integer 和 int 為例進行對比 1.如果成員變數的intvalue還未確定,用integer的話,只須令這個成員為null 但如果用int的話,就必然存在問題,因為乙個int成員變數的值總是確定的,即使你沒給它賦任何值,它的值就是0 2.對乙個物件運用反射機制時,比如setpropert...

C 類屬性封裝 欄位的詳解

今日敲 時,突然感覺對類的屬性封裝 字段有點犯迷糊了。連基礎的都不知道了,那敲的 怎麼能嚴謹高效的。果斷拿起各種高階程式設計 大全啥的翻起來 這不再把自己的理解寫下來 定義都是直接抄書的 獻給同樣迷糊的小夥伴。先說下類的成員,它分為資料成員和函式成員。資料成員,簡單點可以理解成類的資料,包含了字段 ...

使用C 的屬性

c 相對於c 的好處之一是 有屬性這個東西,直接能夠讓你使用,而且得到語法的支援,首先我們來看看 c 中如何表示乙個屬性,例如 class myclass set 好了,現在我們可以使用如下的方法來訪問屬性 myclass myclass myclass.myname dddd 這是最普通的方式,另...