C 類的成員(字段 屬性 方法)

2022-01-13 18:37:21 字數 3910 閱讀 3884

前面定義的person的類,裡面的成員包括:字段、屬性、方法、事件等,此外,前面說的巢狀類也是類的成員。 

a.類的成員為分:靜態成員(static)和非靜態成員 

b.靜態成員用static標識,不標識則預設為非靜態成員 

c.靜態成員屬於類所有,動態成員則屬於例項所有,即物件 

d.靜態成員為類所有例項共享,無論類有多少例項或副本,靜態成員只占用存中一塊區域。非靜態成員則在類的每個例項,都建立乙個記憶體域。    

下面主要說明一下類的主要成員:字段、屬性、方法 

1.類的成員——字段(field)

字段宣告:(static/readonly) 《變數名稱》

a.可以理解為類的乙個私有變數,通常都是私有的(private)。 

b.欄位的定義通常以小寫字母開頭或 「_」 開頭。 

c.欄位宣告修飾符有static(靜態)和readonly(唯讀)兩種。 

d欄位通常為私有,因此一般不需要使用訪問修飾符. 

示例:     

1    static int eyescount=2;

2 readonly int earscount=2;

2.類的成員——屬性(property)

a.可以理解為類的乙個公有變數,通常都是公有的(public) 

b.屬性有get 和 set 兩個方法。 

c.get 訪問器返回與屬性宣告型別相同的資料, 表示的意思是呼叫時可以得到內部的字段的值或引用。 

d.set 訪問器沒有顯示設定的引數,它有乙個隱式引數value    它的作用是呼叫時,可以給屬性內部欄位或引用賦值。 

e.由於類的成員預設為私有,因為根據屬性為公有的特徵,在物件導向開發過程中,要使用修飾符public來宣告乙個屬性為公有。 

f.屬性可以忽略get或set訪問器,但是不能兩個都忽略. 

示例:     

1 string _country;

2 //讀寫屬性

3 public string country

4 6 get

7 }8 //唯讀屬性

9 public string countryonleread

10 12 }

13 //只寫屬性

14 public string countryonlywrite

15 17 }

6.類的成員——方法 (method )

宣告:(訪問修飾符) 《型別》 《方法名》

呼叫:[《類名.>]|[《例項物件名.>]《方法名》([《實參列表》])

定義:是類中用於執行計算或其它行為的成員

靜態方法:

方法分為例項方法和靜態方法(同前面講的類的成員) 

靜態方法中只能呼叫靜態字段,不允許呼叫非靜態字段 

方法引數:

值引數:不含任何修飾符。方法中的形參是實參的乙份拷貝,形參的改變不會影響到記憶體中實參的的值,實參是安全的。 

引用引數:以ref修飾符宣告。 

ref 關鍵字使引數按引用傳遞。其效果是,當控制權傳遞**用方法時,在方法中對引數所做的任何更改都將反映在該變數中。

若要使用 ref 引數,則方法定義和呼叫方法都必須顯式使用 ref 關鍵字。

傳遞到 ref 引數的引數必須最先初始化。這與 out 不同,out 的引數在傳遞之前不需要顯式初始化。

屬性不是變數,因此不能作為 ref 引數傳遞。

儘管 ref 和 out 在執行時的處理方式不同,但它們在編譯時的處理方式是相同的。因此,如果乙個方法採用 ref 引數,而另乙個方法採用 out 引數,則無法過載這兩個方法。例如,從編譯的角度來看,以下**中的兩個方法是完全相同的。如果嘗試這麼做,將導致不能編譯該**。

如果乙個方法採用 ref 或 out 引數,而另乙個方法不採用這兩類引數,則可以進行過載。

**示例: 

//呼叫

double numbers = new double ;

double i = 0;

myaddoperation(numbers, ref i);

console.writeline("計算結果的2倍是:",i*2);

console.readline();

//引用引數方法宣告

public static void myaddoperation(double numbers, ref double result)

", result);

}

輸出引數:以out修飾符宣告。和ref類似,它也是直接對實參進行操作。在方法宣告和方法呼叫時都必須明確地指定out關鍵字。out引數宣告方式不要求變數傳遞給方法前進行初始化,因為它的含義只是用作輸出目的。但是,在方法返回前,必須對out引數進行賦值。 

out 關鍵字會導致引數通過引用來傳遞。這與 ref 關鍵字類似。 

與 ref 的不同之處: 

ref 要求變數必須在傳遞之前進行初始化。 

儘管作為 out 引數傳遞的變數不需要在傳遞之前進行初始化,但需要呼叫方法以便在方法返回之前賦值。 

示例: 

1 //呼叫

2 double numbers = new double ;

3 double i = 0;

4 myaddoperation(numbers, out i);

5 console.writeline("計算結果的2倍是:",i*2);

6 console.readline();

7 8 //輸出引數方法宣告

9 public static void myaddoperation(double numbers, out double result)

10 ", result);

15 }

陣列型引數:以params修飾符宣告。params關鍵字用來宣告可變長度的引數列表。方法宣告中只能包含乙個params引數。params 引數在引數數目可變的情況下,非常有用,看下面的示例:

1 //呼叫方法

2 double numbers = new double ;

3 console.writeline("計算結果是:", myaddoperation(numbers));

4 5 //陣列型引數宣告

6 public static double myaddoperation(params double numbers)

7

virtual方法(虛方法)

virtual 關鍵字用於在基類中修飾方法。virtual的使用會有兩種情況:  

情況1:在基類中定義了virtual方法,但在派生類中沒有重寫該虛方法。那麼在對派生類例項的呼叫中,該虛方法使用的是基類定義的方法。 

情況2:在基類中定義了virtual方法,然後在派生類中使用override重寫該方法。那麼在對派生類例項的呼叫中,該虛方法使用的是派生重寫的方法。 

abstract方法(抽象方法)

abstract關鍵字只能用在抽象類中修飾方法,並且沒有具體的實現。抽象方法的實現必須在派生類中使用override關鍵字來實現。 

(關於抽象類,在後面會詳細說明)

要點:

1.靜態方法中只能呼叫靜態字段,不允許呼叫非靜態字段 

2. 無返回值的方法,型別為 void  

c 類成員的定義 定義方法 欄位和屬性

c 類的成員包括字段 屬性和方法。所有成員都有自己的訪問級別,用下面的關鍵字之一來定義 public 成員可以有任何 訪問 private 成員只能有類中的 訪問 如果沒有使用任何關鍵字,預設使用這個關鍵字 internal 成員有定義他的專案 程式集 內部的 訪問 protected 成員只能由類...

C 類的成員 字段

類中成員可以分為資料成員和函式成員 欄位就屬於前者 資料成員,字段就是用來儲存資料的。欄位的宣告 字段宣告時不進行初始化,系統會將這些字段初始化成該型別的預設值。例項字段 class program class student 執行結果 xiaoming 19 mike 22 例項欄位是與物件相關的...

類 物件 屬性 方法 類成員

類 具有同種屬性的物件稱為類,是個抽象的概念。比如說 汽車 人 狗 神 物件 日常生活中的所有東西都是物件,是類的例項化。比如說 推土車是汽車的例項化 姚明是人的例項化 小白 狗的名字 是狗的例項化 二郎神是神的例項化 屬性 用來描述具體某個物件的特徵的是屬性,是靜態的。比如 姚明身高2.6公尺多 ...