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