《極客學院C#視頻教程》是C#語言的入門課程,在課程中,將從.NET平台和C#的基本概念開始,深入的介紹C#開發的基礎文法、簡單程式邏輯、Visual Studio工具的提示以及常用的演算法的實現。同時,也希望通過與課程相關的練習題和編程練習,協助小夥伴們快速步入C#語言的大門。
課程播放地址:http://www.php.cn/course/243.html
該老師講課風格:
教師講課深入淺出,條理清楚,層層剖析,環環相扣,論證嚴密,結構嚴謹,用思維的邏輯力量吸引學生的注意力,用理智控制課堂教學進程。學生通過聽教師的講授,不僅學到知識,也受到思維的訓練,還受到教師嚴謹的治學態度的熏陶和感染
本視頻中較為痛點是C# 物件導向特徵了:
一、封裝: 我們可以把世界上任何一個東西都看作為一個對象,那麼我們這裡以人為例,一個人就肯定是一個對象了。 那麼封裝是什麼呢? 封裝就是這個人要完成一件事情,他所需要的任何工具都帶在了自己的身上,所需要的技術也都裝在了自己的腦子裡了。不需要藉助於別人的力量就能完成這一件事情。這個有什麼好處呢?好處就是如果我要吩咐這個人去完成一件事情,我不需要知道他是怎麼完成的,也不需要協助他去完成,只要知道結果,他完成了就OK了。至於他是先幹什麼後幹什麼我不干涉,這有助於他更快更好的幹好這件事情,我自己也省事。
1、存取權限(可見度)
Public:(隨處可見)所有包、類匯入後均可見 公用的
Protected:(合法繼承)本身、不同包的子類自身,
Private:(自私自利)只在本類中可見
2、
(1)、屬性-->private(私人屬性,公開方法,不用預設)
(2)、方法--> public protected
書面的解釋如下: 每個對象都包含它能進行操作所需要的所有資訊,因此對象不必依賴其它的對象來完成自己的操作。
二、繼承: 還以為人為例,我們每個人都會有一些共同的特徵,都要做一些相同的事情。比如:人都有一個腦袋,二隻胳膊,二條腳,這是共同的特徵。都要吃飯,喝水,這是都要做的相同的事情。那麼如果我們現在要聲明很多個人,每個人都會有這些特徵,那我不是要寫很多重複的代碼?所以我們可以先建一個人的父類,這個父類不代表一個具體的人,只是一個擁有人所有共同特性的虛擬人。下次我 們要執行個體化一個具體的人的時候,只需要將這個人繼承上面這個“虛擬人”,那麼他就擁有了人的所有共同特性。這樣,這些重複的代碼我們就可以不寫了。
當然,繼承的目標不僅僅是為了節省代碼,還有實現後面的多態的功能。初學者只需要瞭解繼承可以少寫很多代碼就好了,餘下的需要在項目中慢慢理解。
書面的解釋如下: 對象的繼承代表一種"is-a"的關係,假如兩個對象A和B,如果可以描述為"B就是A",那麼則表示B可以繼承自A。
注意: 如果A繼承了B,那麼A不僅擁有了B除私人的特性外的所有特性,A還可以擁有自己獨特的特性。比如上面人的這個例子,一個繼承了 “虛擬人”,那麼他除了有一個腦袋,二隻胳膊,二條腳,要吃飯喝水外,他可能還會編程。編程就是他獨特的特性了,因為不是每個人都會編程的。
1、
(1)、延續:父類存在,子類沒有重寫但可以使用;
(2)、新增:父類沒有,子類新增加的
(3)、重寫:父類子類都存在,但是弗雷德不滿足要,子類對其進行從新定義;
2、 執行個體化:
(1)、先父類後子類,先靜態後成員;
執行個體化的時候先調用父類的靜態構造快,在調用父類的構造方法,然後子類的構造塊,在調用子類的構造方法;
(2)、預設調用父類空構造;
3、重寫 override
(1)、重寫與重載:
重寫:繼承的子類中,方法簽名相同( 方法名+形參個數 類型 順序 )
重載:同一個類 方法名相同 ,形參個數 類型 順序 不同
(2)、重寫規則:在子類中籤名與父類中相同,在合理範圍內提高子類可見度;
A、傳回型別:基本類型和void必須相同;參考型別要<=父類的返回類
B、異常:
C、可見度:要大於或等於父類中被重寫的方法
三、多態: 有多態之前必須要有繼承,只有多個類同時繼承了同一個類,才有多態這樣的說法。
還是以人為例子,前面我們有說過人都要做“吃飯”這樣一個相同的事情。“吃飯”這個事情,體現到類中就是方法了。因為是人都是要做的,所以我們在“虛擬人”中寫好了這個方法,但每個人都有不同的吃飯方法,有用筷的也有用叉的,有要吃米飯的也有要吃麵食的。所以如果我們要描述不同人的吃飯的過程,就要把這個過程放到具體的子類中去了,因為每個人都不一樣嘛。同樣一個方法,子類都有不同的實現方式,這個就是多態了,多態有助於程式的靈活性。
注意:子類中如果重寫了父類的方法(多態),那麼父類中的這個方法將不會再調用。
1.好處:
簡化了編程介面。它容許在類和類之間重用一些習慣性的命名,而不用 為每一個新加的函數命名一個新名字。
簡化代碼
如果函數/方法參數中使用的是父類的類型,可以傳入父類、子類的對象
局限性:父類類型的變數,不能直接調用子類特有的方法。必須強轉為子類類型的變數,才能直接調用子類特有的方法
2、編譯時間多態:其實就是重載,是對非虛成員來說的,系統在編譯時間,根據不同簽名來決定實現何種操作。
3、運行時多態:也就是重寫,是通過虛成員實現的,指直到系統運行時,才根據實際情況決定實現何種操作。
對與第一種情況很容易就能理解,不同簽名就有不同的實現
而第二種情況是在繼承的基礎上實現的,子類繼承基類時,通過對虛成員的重寫,然後利用基類引用子類對象,那麼不同的子類對象實現相應的不同操作。
這樣的好處是顯而易見的,利用基類類型定義一次,然後給它傳入不同的子類對象,然後實現不同的操作,提高了效率。