您好,登錄后才能下訂單哦!
C++的類中可以有三種內容:成員變量、成員函數和友元。
一般來說,成員變量描述類的屬性,成員函數描述類的操作,友元則是一種特殊的聲明,被聲明為友元的函數或類可以操作自己的私有成員變量和成員方法。
在Java中,類的成員有兩類:屬性,相當于C++的成員變量;方法,相當于C++的成員函數。
而在C#中,類的成員有四種:字段、屬性、方法和事件(事件還沒學到,暫緩解釋)。
字段相當于C++中的成員變量和Java中的屬性,就是在類中定義的變量(可以是基本類型或引用類型),一般來說,字段都被定義為私有。
方法相當于C++中的成員函數和Java中的方法,也就是在類里面定義的函數。
新的東西之一:屬性
先用Java來說,Java中,因為類的屬性一般定義為私有,在類的外部不能被操作,所以必須提供相應的函數來設置或獲取私有屬性的值。一般來說,設置屬性值的方法以set開頭,獲取屬性值的方法以get開頭。
雖然在C#中也可以用同樣的方法來操作私有字段,不過C#中提供了一種新的特性來達到這一目的,這就是屬性。
首先來看屬性的定義:
訪問修飾符 類型 屬性名
{
get
{
代碼段
}
set
{
代碼段
}
}
從形式上看,屬性的定義很像方法的定義,只是沒有參數而已。
再來看屬性的使用,使用屬性時很像是使用共有字段。
可以給屬性賦值,也可以直接使用屬性的值。例如:
class MyClass { public int MyInt //名為MyInt的公有屬性 { get { //代碼段 } set { //代碼段 } } }
在程序中,可以這樣來使用該屬性
MyClass c = new MyClass(); c.MyInt = 100; // Console.WriteLine(c.MyInt);
是不是很像使用字段呢。
其實在給屬性賦值的時候是調用了屬性的set塊;而獲取屬性值的時候是調用了屬性的get塊。所以在屬性的get塊中需要有一個return語句,來返回特定的值,比如return一個私有字段的值。
當給屬性賦值的時候,會調用屬性的set塊,一般在set塊中,我們會將賦給屬性的值再賦給某個特定的私有字段。那么,賦給屬性的值存在什么地方呢?答案是存儲在一個叫value的東西里面(固定寫法,而且value是關鍵字),所以在set塊中,一般是將value賦給某個字段。
例如:
class MyClass { private int myInt; public int MyInt { get { return myInt; } set { myInt = value; } } } // 在程序中使用屬性來操縱私有字段 MyInt = 100; int m = MyInt + 1;
在屬性的get和set塊中,我們可以做更多的操作,如:檢查范圍,格式轉換等。
屬性可以是public的、private的、protected的,也可以是virtual的、override的、abstract的。
屬性的get和set塊也可是是public的、protected的、private的或者默認的。
get和set塊可以兩個都有,也可以只有一個,但至少要有一個。
在類的內部使用屬性時,和使用字段是一樣的。
get塊和set塊又叫訪問器,訪問器的可訪問性不可高于屬性。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。