C 學習日記27 屬性

2021-07-06 00:22:18 字數 1793 閱讀 5098

屬性可以是 類(class)、結構(struct)、介面(inte***ce)的命名成員,他提供靈活的機制來讀取、寫入、或計算私有(private)欄位的值,屬性可以看作是公共(public)欄位的成員,但他實際上是定義了乙個「訪問器」的特殊方法讓私有欄位的值可以被讀寫或操作。

說的形象點吧,比如我們定義乙個person類裡面有乙個私有成員 private string name; 在外界我們例項化乙個person物件per,要求為per起個名字,並且輸出這個名字,也就是為per.name賦乙個值,然後輸出??經過前面的學習我們知道,類中的private修飾的變數外界物件是訪問不到的,(無法直接per.name="hc666"來搞定^_^) 因此只能在類裡面定義乙個public修飾的setname與getname方法將「hc666」作為引數來進行寫入與輸出,這樣有點繁瑣,這個時候「屬性」就該登場了,我們為name定義乙個讀寫屬性name就可以彌補這個不足。

屬性的訪問器包含有獲取或者設定屬性的可執行語句,訪問器的宣告可包含乙個get訪問器(表示唯讀),或者乙個set訪問器(表示只寫),或者兩個同時包含(表示可讀可寫)。(上面的例子中我們使用get訪問器輸出name,使用set訪問器寫入)

上面的例子中我們可以為name 定義乙個讀寫屬性name,使用外界物件能夠訪問的public修飾符

private string name;

//宣告name變數

public string name     //宣告變數的屬性,讀寫

//定義讀訪問器,其實就是乙個方法

set   //定義寫訪問器,set 方法有乙個隱含的引數value }

再定義乙個唯讀屬性吧,比如我們的年齡 age 是固定的唯讀

private uint age=10;  //宣告變數 age

private string 

age//宣告變數的屬性,唯讀

//讀訪問器 }

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace test1

set //set自帶乙個value引數

}//定義變數age,並且為age定義乙個唯讀屬性

private uint age=10;

public uint age}}

class program

\t今年 歲了",per.name,per.age); //讀屬性}}

}

結果:

前面也說了,屬性可以使類、結構、介面的成員,自然也可以是抽象類的抽象屬性了,抽象屬性同抽象方法一樣在派生類中被實現。

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace test1

public abstract uint age

}//定義派生類

class student : person

set}

public override uint age}}

class program

\t今年 歲了",stu.name,stu.age); //讀屬性}}

}

結果與上乙個例子是一樣的。

C 學習日記

1611 3 李旗偉 2016年10月5日 連續5天總結 內容a.概括 a 運算子與表示式80 b 流程控制語句45 b.具體內容 在進行了對運算子與表示式的學習後,嘗試了簡單的資料輸入,但結果總是出人預料,自認為會成功的每次運算失敗,搞得我都快失去信心了,還好我知道凡事要堅持,只因心中有夢,才堅持...

C 學習日記

1611 3 李旗偉 2016年10月6日 連續6天總結 內容a.概括 a 程式的基本控制結構95 b 選擇結構60 b.具體內容 以昨天所學為基礎,今日了另乙個世界的學習 流程控制結構。今天,主要學習了程式的基本控制結構,對此已有了基本的認識,並且嘗試了輸入,也小有成績。此外,還對選擇結構進行了淺...

C 學習日記

1611 3 李旗偉 2016年10月7日 連續7天總結 內容a.概括 a 選擇結構100 b 迴圈結構80 c 控制執行順序的語句40 b.具體內容 今天,首先將昨天的殘留完成了 選擇結構,其次,學習了迴圈結構,並基本掌握其知識要領,然後簡單地進行了控制執行順序的語句的粗略了解,雖然幾乎沒弄清楚,...