.Net知識
.NET是 Microsoft XML Web services 平臺。XML Web services 允許應用程序通過 Internet 進行通訊和共享數據,而不管所采用的是哪種操作系統(tǒng)、設備或編程語言。Microsoft .NET 平臺提供創(chuàng)建 XML Web services 并將這些服務集成在一起之所需。對個人用戶的好處是無縫的、吸引人的體驗。
1.繼續(xù)面向對象
面向對象的三大特征:
封裝、繼承、多態(tài)
封裝:隱蔽代碼實現(xiàn),代碼復用,修改方便。
繼承:
多態(tài):
2.什么是類?什么是對象?類和對象的區(qū)別?
類是一種數據類型,用戶自定義的數據類型。 是針對具體存在的一種描述。
類的組成:字段,屬性,方法,構造函數。
對象是具體的。是類的具體實例。對象具有屬性和方法。 按照類的描述來創(chuàng)建一個可供我們使用的實例。
類只占一塊內存,每個對象單獨占用一塊內存。 對象可以叫做類的實例(Instance)
3.構造函數的作用?
主要是為了方便程序員在實例化(new)對象的時候就為對象里的一些屬性字段初始化賦值。
<--構造函數-->
(1)訪問修飾符一般情況下是public
(2)沒有返回值類型
(3)方法名和類名相同
(4)在該類被new的時候(實例化)調用
(5)用戶自定義的類中,如果沒有用戶定義的任何一個構造函數。那么CLR將在程序運行的時候自動添加一個無參的構造函數給對象
也就是說:一旦用戶自定義的類中包含了一個或多個構造函數(不管有沒有參數的),那么CLR將不在自動添加。
4.屬性
屬性的本質就是兩個方法,get和set。
屬性就是為了設置訪問和修改成員變量值的規(guī)則。
如果屬性里只定義了get代碼塊,則該屬性叫做只讀屬性。
如果屬性里只定義了set代碼塊。則該屬性叫做只寫屬性。
代碼:
public class Person
{
private string _name;
public string Name
{
get{return _name;}
set{_name=value;}
}
private int _age;//屬性存在的目的就是為了設置訪問和修改成員變量值的規(guī)則。
public int Age
{
get{return _age;}
set
{
if(value>=0&& value<=120)
{
_age=value;
}
else
{
_age=18;
}
}
}
}
5.GC垃圾回收器
垃圾回收器定時檢查堆內存,一旦發(fā)現(xiàn)沒有被引用的對象,就立即銷毀它。
6.靜態(tài)成員
CLR加載程序集里的類信息,發(fā)現(xiàn)有靜態(tài)成員,則直接添加到[靜態(tài)成員表]中,整個程序集內都可以訪問這個表里的靜態(tài)成員。
7.里氏替換原則
當存在繼承關系時,如果聲明的是父類,則堆中對象保存的類型指針為父類,那么調用的時候就會執(zhí)行父類的成員。
如果調用的成員,父類中沒有,那么程序會報錯。因為父類的類型指針只會去找父類的成員,找不到,沒有,就會報錯。
8.繼承
(1)、因為子類繼承了父類,所以子類對象能夠調用父類對象里所有的非私有成員。
(2)、當存在繼承關系的時候,子類的this同時可以指向父類的非私有成員。base就存在于子類對象里,用來指向父類的指針。
(3)、繼承的單根性:一個類只能繼承一個父類。
傳遞性:子類獲得父類所有的非私有成員。
(4)、子類默認調用父類無參的構造函數
(5)、類的訪問修飾符默認就是internal,(程序集內共享,也就是項目內部共享)
類的成員變量,訪問修飾符默認是private
(6)、不能將父類對象強制轉換成子類對象
(7)、當創(chuàng)建一個子類對象的時候,如果聲明的是父類對象,那么只能調用父類中的方法。
當創(chuàng)建一個子類對象的時候,如果聲明的是子類對象,那么先看子類中的方法,有則調用,沒有則去父類中尋找,如果有則調用。
9.簡單工廠方法
最關鍵的是應用了里氏替換原則,及子類重寫父類的技術,它能讓代碼開發(fā)者不關心某個具體相關業(yè)務的實現(xiàn),而只關心自己要實現(xiàn)的業(yè)務代碼的編號。
10.多態(tài)
多態(tài)就是用某個子類來實例化父類,調用父類的抽象方法或者虛方法,但實際上執(zhí)行的是子類實例重寫的方法。