C#知識梳理——方法(2)虛方法、重寫方法、抽象方法(and接口)、擴展方法

虛方法(and重寫方法):
????作用:因為在方法調(diào)用的時候會有對于這個方法的用法有需求,但是方法的條件不符合應用的需求。所以需要重寫。也就是說多用于重寫父類方法。換言之,就是子類和父類的具體實現(xiàn)方法不同的時候,需要進行對虛方法的重寫。(允許子類或者派生類,進行重新,實現(xiàn)不一樣的功能)
?????? 特點:1、關(guān)鍵詞:virtual 2、子類和父類的返回值和參數(shù)也是一樣的3、好維護(原生代碼不需要進行更改)
?????? 關(guān)鍵點:重寫與重載的不同是,重載重點在參數(shù)類型、個數(shù)、順序不同的情況下,引用同一種方法來做不同的事情,本質(zhì)上重載是同一個方法,只不過入口不同。而重寫實就是不同的方法,但是入口的樣子一樣。 與后邊的抽象方法、接口的對應的形象的解釋?,F(xiàn)在有一戶人家已經(jīng)有一個房子了,發(fā)現(xiàn)不夠用,于是他們又建造了另一個相同外觀的房子,以作他用,但是還是同樣一戶人家來用。


抽象方法:
?????? 用法:規(guī)范好讓子類去實現(xiàn)。強制性一定要實現(xiàn)(因為有時候?qū)懚嗔藭泴懢唧w實現(xiàn))。
?????? 特點:1、抽象方法一定要寫在抽象類里 2、不能實例化 3、不帶方法體
??? 關(guān)鍵點:1、抽象方法,像是一種“規(guī)范”,用形象的話來說的話,就是給你一入口,規(guī)定一定要有一個門,門打開后,屋子內(nèi)部是什么樣的,屋子是怎么建的,都是由你(子類)來決定的,不過這個房子只有一個房間。重寫的過程就是建這個房子的過程。
與接口的區(qū)別和使用:區(qū)別:1、抽象類——單繼承(只能繼承一個父類) 接口——可以多繼承 所以,接口就像是他給了你一個房間號,你可以通過多個房間號進入到不同的房間里,但是進入房子的門還是那一個門。 重寫的過程就是就是建立這個房子中不同房間的過程。2、抽象類里可以寫其他方法,而接口里只能寫規(guī)范。也就是說,抽象類是就是一個有煙證的超市,里可以賣煙(抽象方法),也可賣冰棍,賣生活用品(其他方法);而接口就是醫(yī)院,里邊的規(guī)范是病人,病人可以是大老板,也可是掃大街的(規(guī)范可以不同),但是病人就只是病人,現(xiàn)在有個食客(虛方法)想去醫(yī)院里吃火鍋
(具體實現(xiàn)),那這是不被允許的。
使用場合:抽象類一般用于常用不會經(jīng)常改動、抽象范圍大一點的事件。






擴展方法ExtendMethod:
?????? 定義:在不修改原生代碼的情況下進行擴展(重要)
?????? 用法:在非泛型靜態(tài)類中->定義靜態(tài)方法->拓展方法
?????? 使用場合:1、調(diào)用密封類中的對象,屬性或者方法進行拓展 2、擴展接口 3、再Linq鏈式編程 等等
?????? 關(guān)鍵:抽象方法和接口我都給出了形象的解釋,以便于理解。那么擴展方法也需要來講一講。它們應當是不同角度的問題。抽象方法在抽象類里給出一個規(guī)范,便于子類進行對某一個類的繼承后的重寫;接口給出規(guī)范,便于子類對某一個或者多個接口中規(guī)范的在此子類中的創(chuàng)建。而擴展方法則不然,它在于對原生父類的擴展,取的是參數(shù)。前兩者,一個是取入口門,一個是取房間門牌,門規(guī)定了誰可以進,進多少人,房間門牌規(guī)定了誰可以進哪個房間。但是它們的最終指向都只有一個地方,某個屋子或者某個房間。而擴展則不同,它是取來這樣的信息:有多少人,這些人是誰,他們能做什么,而并不關(guān)心去這些人要去哪個房間。于是乎,擴展就可以決定這些人的動作,可以指定某些人去作某些動作(取參數(shù),規(guī)定全新的方法的實現(xiàn)),可以指定某些人去做他們會的動作來達成一定的目的(取參數(shù)和方法,來獲得新的方法的實現(xiàn))。規(guī)定好以后,房子還是那所房子,但是我們已經(jīng)可以按照這個房子的樣子來建一所房子(實例化,其實更準確的描述,就是不管是抽象、接口都是用來確定圖紙的,實例化后才是真正的把房子建造出來),或者說,按照圖紙建造出這個房子,然后通過對這個房子的一些按鈕進行操作(調(diào)用擴展的方法、屬性等),來讓某些人進某個房間或者去某個地方做某些事(輸入?yún)?shù),進行操作),而這些事情也許是房子最初設計中不存在的事情,就好比本身醫(yī)院就是一個億元,讓病人看病的地方,現(xiàn)在我們可以規(guī)定某些病人可以在醫(yī)院里蹦迪,因為我們在醫(yī)院里制造了閃亮的燈球,而我們也允許病人在燈球下蹦迪。












方法梳理小結(jié):上述方法的總結(jié)都是很簡單的一些梳理 但是很有用 不過寫的算是筆記,很簡單 主要還是為了我自己今后可以看懂 也許這C#一系列真的做下去的話,可以錄制教程發(fā)出來,一方面做個記錄 再一方面后邊再次進行復習