1.訪問修飾符:(定義乙個類成員的範圍和可見性)
a、public:所有物件都可以訪問
public 訪問修飾符允許乙個類將其成員變數和成員函式暴露給其他的函式和物件。任何公有成員可以被外部的類訪問。
b、private:物件本身在物件內部可以訪問
private 訪問修飾符允許乙個類將其成員變數和成員函式對其他的函式和物件進行隱藏。**只有同乙個類中的函式可以訪問它的私有成員。**即使是類的例項也不能訪問它的私有成員。
c、**protected:**只有該類物件及其子類物件可以訪問
訪問修飾符允許子類訪問它的基類的成員變數和成員函式。這樣有助於實現繼承。我們將在繼承的章節詳細討論這個
如果沒有指定訪問修飾符,則使用類成員的預設訪問修飾符,即為 private。d、
函式前面加static,說明這是乙個靜態函式,只能被類呼叫,而不能被類的物件呼叫。
2.1、方法引數的型別值型別和引用型別
a、當方法傳遞的引數是值型別時,變數的棧資料會完整地複製到目標引數中即實參和形參中的資料相同但存放在記憶體的不同位置。
b、當方法傳遞的引數是引用型別時,只是將變數的引用複製到目標引數中,實參和形參的引用指向記憶體中的同一位置。所以,在目標方法中對形參所做的更改會影響呼叫者的初始變數。
2.2、特殊的方法引數
1、引用引數—ref (使值型別的變數做方法引數時也可以傳引用)
一些資料型別(例如類,陣列等引用型別)作為方法的引數時預設是傳引用的,大多數資料型別(例如結構,整數型別等值型別)在作為方法的引數時是傳值的。那麼,如何使值型別的資料作為方法引數時傳遞的也是引用呢?
方法很簡單,只需要在形參的資料型別前加上關鍵字ref,並在呼叫時相應地實參前也加上關鍵字ref即可。
例如:
void
swap
(ref
string first,
refstring second)
string a =
"dddd"
,b="dbbb"
;swap
(ref a,
ref b)
;//注意:ref引數必須是可以賦值的變數
2、輸出引數—out
除了將引數單向傳入乙個方法(傳值),或同時將引數傳入和傳出乙個方法(傳引用)之外,還可以將資料從乙個方法內部單向傳出方法。為此,**需要使用關鍵字out來修飾引數型別。
例如:
int x;
func
(out x)
//out引數必須是可以賦值的變數,在呼叫func方法前對out引數賦不賦值都可以
void
func
(out
int x)
// 在此方法中,在使用out引數x之前必須對其賦值,即使在呼叫此方法前已經對out引數x賦值了,在此方法中仍吧x看做未賦值的變數。
3、引數陣列—params(可以將相同型別,數量可變的多個引數傳給乙個方法)
引入:一般,引數的數量都是由目標方法宣告所確定。
然而,有時我們希望引數的數量是可變的或許最好的方法是為方法傳乙個陣列。
然而,這會使呼叫**變得稍微複雜一些,因為需要事先構造乙個陣列,再將這個陣列作為引數來傳遞。
為了簡化**,c#提供了乙個特殊的關鍵字,它允許在呼叫乙個方法是提供數量可變的引數,而不是由方法事先固定好引數的數量。
class
program
}static
void
main
(string
args)
;func()
;func
(a);
func
(c);
func
(a,b)
; console.
readline()
;}}
C 學習筆記(5) 封裝 繼承 多型
封裝 每個物件都能包含它能進行操作所需要的所有資訊,這個特性稱為封裝,因此物件不必依賴其他物件來完成自己的操作。封裝的好處 l 良好的封裝能夠減少耦合。l 類內部的實現可以自由地修改。l 類具有清晰的對外介面。繼承 物件的繼承代表了一種 is a 的關係,如果兩個物件a和b,可以描述為 b是a 則表...
C 學習筆記(3) 封裝
封裝是c 物件導向三大特性之一 封裝的意義 1 封裝的意義 2 類在設計時,可以把屬性和行為放在不同的許可權下,加以控制。在c 中,共有三種許可權 公共許可權 public 類內可以訪問 類外可以訪問 保護許可權 protected 類內可以訪問 類外不可以訪問 私有許可權 private 類內可以...
C 學習筆記(九) 封裝
c 物件導向的三個特性 封裝 繼承和多型。意義 將屬性和行為作為乙個整體,表現生活中的整體。將屬性和行為加以許可權控制。屬性 用資料描述 行為 用函式描述 許可權 public 公共許可權 類內可以訪問,類外也可以訪問。protected 保護許可權 類內可以訪問,類外不可以訪問。兒子可以訪問父親的...