屬性(property):
充分體現了物件的封裝性:不直接操作類的資料內容,而是通過訪問器進行訪問,即借助於get和set對屬性的值進行讀寫;另一方面還可以對資料的訪問屬性進行控制(當然也可以通過對普通域加readonly關鍵字來實現。
-設計原則:屬性封裝了對域的操作。把要訪問的域設為private,通過屬性中的get和set操作對域進行設定或訪問。
1、不能把屬性作為引用型別或輸出引數來進行傳遞。
2、get方法沒有引數;set方法有乙個隱含的引數value。除了使用了abstract修飾符的抽象屬性,每個訪問器的執行體中只有分號「;」外,其他的所有屬性的get訪問器都通過return來讀取屬性的值,set訪問器都通過value來設定屬性的值。
3、採用間接方式來訪問物件的屬性(間接呼叫get、set方法):物件.屬性 = 值(呼叫set),變數 = 物件.屬性(呼叫get)。
4、在屬性的訪問宣告中:
5、只有set訪問器,表明該屬性是只寫的。
6、只有get訪問器,表明該屬性是唯讀的。
7、既有set訪問器,又有get訪問器,表明該屬性是可讀可寫的。
結構與類的關係:
1、儘管結構的靜態字段可以初始化,結構例項字段宣告還是不能使用初始值設定項。
2、結構不能宣告預設建構函式(沒有引數的建構函式)或析構函式。
3、結構的副本由編譯器自動建立和銷毀,因此不需要使用預設建構函式和析構函式。實際上,編譯器通過為所有字段賦予預設值(參見預設值表)來實現預設建構函式。結構不能從類或其他結構繼承。
4、結構是值型別 -- 如果從結構建立乙個物件並將該物件賦給某個變數,變數則包含結構的全部值。複製包含結構的變數時,將複製所有資料,對新副本所做的任何修改都不會改變舊副本的資料。由於結構不使用引用,因此結構沒有標識 -- 具有相同資料的兩個值型別例項是無法區分的。c# 中的所有值型別本質上都繼承自 valuetype,後者繼承自 object。
編譯器可以在乙個稱為裝箱的過程中將值型別轉換為引用型別。
結構具有以下特點:
1、結構是值型別,而類是引用型別
2、向方法傳遞結構時.結構是通過傳值方式傳遞的,不是作為引用方式傳遞.
3、與類不同,結構的例項化可以不使用new運算子.
4、結構可以宣告建構函式,但他們必須帶引數
5、 乙個結構不能從另乙個結構或類繼承,而且不能作為乙個類的基。所有結構都直接繼承自 system.valuetype,後者繼承自 system.object。
結構可以實現介面。
6、在結構中初始化例項欄位是錯誤的。
事物的行為和屬性分析及類實現和呼叫(物件導向)
事物 屬性 事物資訊描述 行為 事物的功能 類 成員變數 事物的屬性 成員方法 事物的行為 類是一組相關的屬性和行為的集合,並且,類是通過事物轉換過來的,類中的成員變數就是事物的屬性,屬性是用來描述事物的,同理成員變數是用來描述類的,定義乙個類,其實就是定義該類的成員變數和成員方法。例 乙個學生類的...
資料結構和演算法分析10 16(計算點對)
存在n個點,如果用窮舉所有距離 n n 1 2個點對 時間輔助度為o nlogn 書上有嚴格的證明能分治在nlogn的時間界完成。include include using namespace std define maxn 100 struct point 點結構體 得到兩個點的距離 double...
C語言結構分析
與include之間可以有多個空格 include 是包含的系統檔案 include 是我們自己寫的檔案 include 的作用是告訴編譯器在編譯前先做預處理,將後面的 中的檔案包含到當前檔案內,所謂包含就是指將 列出檔案的內容複製到當前檔案 cpp 全稱是cplusplus include 返回值...