本節內容
1.類(class)是現實世界事物的模型
2.類與對象的關系,什么時候叫“對象”什么時候叫“實例”
3.引用變量與實例的關系
4.類的三大成員:
①屬性(Property);
②方法(Method);
③事件(Event)
5.類的靜態成員與實例成員
①關於“綁定”(Binding)
1、類(class)是現實世界事物的模型
類是對現實世界事物進行抽象所得到的結果類包括“物質”(實體)與“運動”(邏輯)建模是一個去偽存真、由表及里的過程
2、類與對象的關系
①對象也叫實例,是類經過“實例化”后得到的內存中的實體
對象和實例是一回事:“Formallly “instance”is synonymous with “object”。“飛機”與“一架飛機”有何區別?天上有(一架)飛機——必需是實例飛,概念是不能飛的。有些類是不能實例化的,比如“數學”(Math class),我們不能說“一個數學”
②依照類,我們可以創建對象,這就是“實例化”現實世界中常稱“對象”,程序世界中常稱“實例”二者並無太大區別,常常混用,初學者不必迷惑
③使用new操作符創建類的實例:new Form();這叫創建實例
3、引用變量與實例的關系:如Form類:Form myForm;這樣就聲明了一個引用變量
myForm=new Form();該語句就是把new出來的實例交給myForm這個引用變量,用引用變量調用新建的這個實例,更方便的對實例的方法屬性等進行訪問。
孩子與氣球:
形象的比喻:孩子相當於引用變量,氣球相當於new出來的實例,
Form myForm=new Form();
該語句相當於讓一個孩子牽住了一個氣球。
有三種狀態:
*氣球不一定有孩子牽着:即new Form();沒人牽着氣球就飛走了,實際上在內存當中,內存垃圾收集器很快就把這個對象收回去了,把相應內存釋放掉。
*有小朋友沒有牽着氣球:Form myForm;
*多個孩子可以牽着同一個氣球:
Form myForm1;
Form myForm2;
myForm1=new Form();
myForm2=myForm1;
也可以通過同一根繩子牽着氣球.
4、類的三大成員
①屬性(Property)
存儲數據,組合起來表示類或對象當前的狀態
②方法(Method)
有C語言中的函數(function)進化而來,表示類或對象“能做什么”
工作中90%的時間是在與方法打交道,因為它是“真正做事”、“構成邏輯”的成員
③事件(Event)
類或對象通知其他類或對象的機制,為C#獨有(Java通過其他方法實現這個機制)
善用事件機制非常重要(濫用事件可能搞項目搞砸)
④使用MSDN文檔
某些特殊類或對象在成員方面側重點不同
模型類或對象重在屬性:如Entity Framework
工具類或對象重在方法:如Math,Console
通知類或對象重在事件:如各種Timer
5、靜態成員與實例成員
靜態(static)成員在語義上表示它是“類的成員”,實例(非靜態)成員在語義上表示它是“對象的成員”。
①綁定(Binding)指的是編譯器如何把一個成員或對象關聯起來:
分為早綁定和晚綁定:
早綁定指的是編譯器在編譯這個類的時候就已經知道這個成員到底隸屬於這個類呢還是這個類的對象;
晚綁定指的是編譯器不管這個事情,直到程序運行之后才決定一個方法(成員)是屬於某個類呢,還是這個類的對象。
有晚綁定功能的語言一般叫做動態語言,典型的有JavaScripts.
*不可小覷的“.”操作符——成員訪問