[C#基礎]基礎知識一: 面向對象的基本知識.
激勵本身有時間多看看.!!html
C#基礎共分爲七個部分:
正則表達式
一: 面向對象數組
二: 值類型, 引用類型, 字符串操做ide
三: 集合文件操做函數
四: 正則表達式this
五: XML操做url
六: 委託, 事件spa
七: 反射.net
1, 面向對象:設計
面向對象的三大特性: 封裝, 繼承, 多態
2, 什麼是類? 什麼是對象? 類和對象的區別?
類: 相似模子, 肯定對象將會擁有的特徵(屬性) 和行爲 (方法)
對象是一個你可以看獲得, 摸得着的具體實現-- 萬物皆對象.
--類是模具, 建立對象的模具, 抽象的
.類是一組數據類型, 用戶自定義的數據類型.
.類組成: 字段, 屬性, 方法, 構造函數.
--對象是具體的, 是類的具體實例. 對象是具備屬性(特徵)和方法(行爲)
--類中包含了數據(用字段標示)與行爲(用方法(函數, 功能)標示, 方法爲一塊具備名稱的代碼)
3, 知識點總結
封裝繼承多態
1、封裝:
封裝是實現面向對象程序設計的第一步,封裝就是將數據或函數等集合在一個個的單元中(咱們稱之爲類)。被封裝的對象一般被稱爲抽象數據類型。
封裝的意義:
封裝的意義在於保護或者防止代碼(數據)被咱們無心中破壞。在面向對象程序設計中數據被看做是一箇中心的元素而且和使用它的函數結合的很密切,從而保護它不被其它的函數意外的修改。
封裝提供了一個有效的途徑來保護數據不被意外的破壞。相比咱們將數據(用域來實現)在程序中定義爲公用的(public)咱們將它們(fields)定義爲私有的(privat)在不少方面會更好。私有的數據能夠用兩種方式來間接的控制。第一種方法,咱們使用傳統的存、取方法。第二種方法咱們用屬性(property)。
使用屬性不只能夠控制存取數據的合法性,同時也提供了「讀寫」、「只讀」、「只寫」靈活的操做方法。
訪問修飾符:
2、繼承:
繼承主要實現重用代碼,節省開發時間。
1、C#中的繼承符合下列規則:
繼承是可傳遞的。若是C從B中派生,B又從A中派生,那麼C不只繼承了B中聲明的成員,一樣也繼承了A中的成員。Object類做爲全部類的基類。
派生類應當是對基類的擴展。派生類能夠添加新的成員,但不能除去已經繼承的成員的定義。
構造函數和析構函數不能被繼承。除此以外的其它成員,不論對它們定義了怎樣的訪問方式,都能被繼承。基類中成員的訪問方式只能決定派生類可否訪問它們。
派生類若是定義了與繼承而來的成員同名的新成員,就能夠覆蓋已繼承的成員。但這並不由於這派生類刪除了這些成員,只是不能再訪問這些成員。
類能夠定義虛文法、虛屬性以及虛索引指示器,它的派生類可以重載這些成員,從而實現類能夠展現出多態性。
2、new關鍵字
若是父類中聲明瞭一個沒有friend修飾的protected或public方法,子類中也聲明瞭同名的方法。則用new能夠隱藏父類中的方法。(不建議使用)
3、base關鍵字
base 關鍵字用於從派生類中訪問基類的成員:
調用基類上已被其餘方法重寫的方法。
指定建立派生類實例時應調用的基類構造函數。
3、多態
1、多態:同一操做做用於不一樣的對象,能夠有不一樣的解釋,產生不一樣的執行結果。在運行時,能夠經過指向基類的指針,來調用實現派生類中的方法。
編譯時的多態性:
編譯時的多態性是經過重載來實現的。對於非虛的成員來講,系統在編譯時,根據傳遞的參數、返回的類型等信息決定實現何種操做。
運行時的多態性:
運行時的多態性就是指直到系統運行時,才根據實際狀況決定實現何種操做。C#中,運行時的多態性經過虛成員實現。
編譯時的多態性爲咱們提供了運行速度快的特色,而運行時的多態性則帶來了高度靈活和抽象的特色。
2、實現多態:
接口多態性。
繼承多態性。
經過抽象類實現的多態性。
3、override關鍵字:
重寫父類中的virtual修飾的方法,實現多態。
五個訪問修飾符
Private:只有類自己能存取.
Protected:類和派生類能夠存取.
Internal:只有同一個項目中的類能夠存取.
Protected Internal:是Protected和Internal的結合.
Public:徹底存取.
C# 方法默認訪問級別 : private
C# 類默認訪問級別 : internal
接口成員訪問修飾符默認爲public,且不能顯示使用訪問修飾符。
類(class)
構造函數默認爲public訪問修飾符。
析構函數不能顯示使用訪問修飾符且默認爲private訪問修飾符。
析構函數每每用來作「清理善後」 的工做(例如在創建對象時用new開闢了一片內存空間,應在退出前在析構函數中用delete釋放)。類的成員默認訪問修飾符爲private;
枚舉(enum)
枚舉類型成員默認爲public訪問修飾符,且不能顯示使用修飾符。
結構(struct)
結構成員默認爲private修飾符。
結構成員沒法聲明爲protected成員,由於結構不支持繼承。
嵌套類型
嵌套類型的默認訪問修飾符爲private。 和類,結構的成員默認訪問類型一致。
字段和屬性及索引器
一、屬性
所謂屬性其實就是特殊的類成員,它實現了對私有類域的受控訪問。在C#語言中有兩種屬性方法,其一是get,經過它能夠返回私有域的值,其二是set,經過它就能夠設置私有域的值。好比說,如下面的代碼爲例,建立學生姓名屬性,控制對name字段的受控訪問:
View Code
二、索引器
簡單說來,所謂索引器就是一類特殊的屬性,經過它們你就能夠像引用數組同樣引用本身的類。顯然,這一功能在建立集合類的場合特別有用,而在其餘某些狀況下,好比處理大型文件或者抽象某些有限資源等,能讓類具備相似數組的行爲固然也是很是有用的。好比,上例中,咱們假設一個班級有若干個學生,構建索引器就能夠很方便地調用:
View Code
上面代碼中,咱們看到索引器的訪問器帶一個參數(參數爲整數),其實能夠構建多個參數的索引器。還以上述代碼爲例,咱們要根據學生學號和姓名獲得學生的考試總分,修改後代碼以下:
View Code
三、總結:
<1>、
屬性的定義:
訪問修飾符 返回類型 屬性名
{
get{語句集合}
set{語句集合}
}
索引器的定義:
訪問修飾符 返回類型 this[參數類型 參數...]
{
get{語句集合}
set{語句集合}
}
<2>、
索引器使得對象可按照與數組類似的方法進行索引。
this 關鍵字用於定義索引器。
get 訪問器返回值。set 訪問器分配值。
value 關鍵字用於定義由 set 索引器分配的值。
索引器沒必要根據整數值進行索引,由你決定如何定義特定的查找機制。
索引器可被重載。
<3>、屬性和索引器的主要區別:
a、類的每個屬性都必須擁有惟一的名稱,而類裏定義的每個索引器都必須擁有惟一的簽名(signature)或者參數列表(這樣就能夠實現索引器重載)。
b、屬性能夠是static(靜態的)而索引器則必須是實例成員。
<4>、索引器重載實例:
View Code
里氏替換
一句話總結: 子類能夠替換父類的位置,而程序的功能不受影響
更多連接: http://blog.csdn.net/yisuowushinian/article/details/18976629
分類: C#基礎系列