1. 程式人生 > >【C#】——類與物件

【C#】——類與物件

一、類和物件的區別

類:類是模型,確定物件將會擁有的特徵(屬性)和行為(方法),類是物件的型別。 類是抽象的概念,僅僅是模板,比如說“人”類 物件是一個能看得到、摸得到的具體實體 物件可以叫做類的例項(Instance) 類不佔記憶體,物件才佔記憶體

二、類的定義

1、定義語法 [訪問修飾符] class 類名 { 成員; … } 2、類重可以包含變數的定義、方法

三、修飾符的訪問許可權

private : 私有成員, 在類的內部才可以訪問。 protected : 保護成員,該類內部和繼承類中可以訪問。 public : 公共成員,完全公開,沒有訪問限制。 internal: 當前程式集內可以訪問。

四、類的例項化

1、類的例項化,用關鍵字new 語法: 類 例項名 = new 類(); 2、類的成員的訪問: 例項名.屬性 = 例項名.方法名(); 3、欄位、方法、屬性(後面講)都可以叫做類的成員Member,它們都需要定義訪問級別。訪問級別的用處在於控制成員在哪些地方可以被訪問,這樣達到面向物件中“封裝”的目的. 4、訪問修飾符:public private (internal protected) 5、在dotnet中類(class)與結構(struct)的異同 Class可以被例項化,屬於引用型別,是分配在記憶體的堆上的。類是引用傳遞的。 Struct屬於值型別,是分配在記憶體的棧上的。結構體是複製傳遞的。加分的回答:Int32、Boolean等都屬於結構體。

五、屬性

• 欄位用public修飾的問題…用private • 屬性的定義.get;set; • 屬性是為了保護與之相對應的欄位的.保證對欄位的讀取和賦值符合要求. • 屬性可分為:讀寫、只讀、只寫。 • 允許外部訪問的變數一定要宣告為屬性。

六、屬性和public欄位的區別是什麼?

呼叫set方法為一個屬性設值,然後用get方法讀取出來的值一定是set進去的值嗎? 屬性可以對設值、取值的過程進行非法值控制,比如年齡禁止設值負數,而欄位則不能進行這樣的設定。雖然一般情況下get讀取的值就是set設定的值,但是可以讓get讀取的值不是set設定的值的,極端的例子。Public Age{get{return 100;}set{}}。加分的補充回答:用reflector反編譯可以看出,屬性內部本質上就是set_***、get_***方法

七、類的構造方法

• 構造方法用來建立物件,並且可以在建構函式中對物件進行初始化。 • 建構函式是用來建立物件的特殊方法,方法名和類名一樣,沒有返回值,連void都不用。 • 建構函式可以有引數,new物件的時候傳遞函式引數即可 • 如果不指定建構函式,則類有一個預設的無參建構函式。如果指定了建構函式,則不再有預設的無參建構函式,如果需要無參建構函式,則需要自己來寫。 • 建構函式可以過載,也就是有多個引數不同的建構函式。

八、使用構造方法能解決:

1、在賦初值時,重複的書寫物件名 2、假如我們有一個屬性,不允許使用者隨意改動.我們一般把這個屬性定義為只讀型別的屬性. 那麼這個只讀型別的屬性就不能在例項化後對他賦值了,那麼我們如何對他初始化呢?我們可以通過構造方來進行初始化.