黑馬程式設計師 多型 抽象 介面

2021-06-19 23:07:37 字數 2833 閱讀 9704

---------------------- asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------

多型

多型就是物件可以表現多個型別的能力,比如說類,子類可以有父類的方法, 也可以重寫父類的方法等,有多種能力。

類的多型表現為,子類可以有與父類方法名相同的方法,子類可以重寫父類的方法

如果子類和父類的方法重名了,編譯的時候會報警告也就是報綠線,如何把綠線乾掉呢?

第一種方法:我們可以在子類方法的訪問修飾符後面加new。

第二種方法:我們可以在父類的方法上加乙個virtual修飾,然後子類在繼承父類的時候,可以用override來重寫父類的方法,這兩個都是在訪問修飾符後加。

當子類與父類方法名相同時,有兩種情況:

1、引數不同時,表現為過載

2、引數相同時,表現為重寫或者覆蓋

覆蓋就是子類在繼承時,當與父類方法名相同,如果不重寫父類的方法,可以加new關鍵字,隱藏父類方法,也就是覆蓋。

怎麼重寫父類方法?

1、在父類的訪問修飾符後加virtual修飾,這時,父類為虛方法

2、在子類的訪問修飾符後加override,重寫父類方法

重寫與過載的區別

過載是方法的名稱相同,引數或引數型別不同,進行多次過載以適應不同的需求。過載是面向過程的概念

重寫是進行父類中方法的重寫。重寫是物件導向的概念

重寫與過載不一樣,要區分開

什麼叫虛方法?

方法中有virtual修飾的叫虛方法

虛方法可以在子類中通過override關鍵字來重寫

常見的虛方法:tostring()  equals

虛方法與重寫需要注意幾點:

1、方法不能用static修飾,也就是靜態方法不能重寫也不能是虛方法

2、重寫時,子類的引數必須與父類相同。

3、虛方法不能用private修飾,也就是說virtual不能與private一起使用

抽象

如果乙個方法,有abstract修飾,那麼這個方法就叫抽象方法,抽象方法所在的類,也要用abstract修飾,這個類也叫抽象類

抽象方法沒有方法體,直接分號結束  如:public

abstract

void shout(); 

如果乙個類繼承了抽象類,那麼,這個類中的方法,必須要重寫父類中的抽象方法。

簡單說,有abstract修飾的方法和類叫抽象方法抽象類,抽象方法沒有方法體,所以在繼承的時候子類必須要重寫方法,抽象方法只能在抽象類中。

注意:1、抽象方法沒有方法體

2、抽象成員只能存在於抽象類中

3、抽象類可以有非抽象成員

4、抽象類的派生類必須實現抽象方法體

5、抽象類只能用作父類,無法例項化

虛方法與抽象方法的比較:

介面

什麼是介面?有inte***ce修飾的,完全抽象的一種約定,其中的成員只有定義,沒有實現內容

介面的名稱通常以大寫i開頭,如ifly  iony

語法:[訪問修飾符] inte***ce 介面名

介面成員定義

介面中可以有屬性、方法,但是未實現,就是不能直接用,因為介面成員還沒定義方法體。如:

inte***ce

ifly

//定義了乙個介面 {

voidfly();  //

介面成員

介面是用來實現的,所有成員預設為public

怎樣實現乙個介面?

與繼承類似,但必須有實現內容,也就是多了一段**,**中為要實現的內容,然後就可以呼叫介面內的方法了。如:

public

void fly() 

{console.writeline("

我是超級美女"); //

實現內容

如果乙個類只實現介面,冒號後直接介面名,即繼承了類又實現了介面,在父類後逗號+介面名,類必須寫在前面,介面一定是在後面。如:

class student:person,icomparable

乙個類只能繼承乙個父類,但可以實現多個介面

介面與類的異同

不同點:

1、介面不能直接例項化

2、介面不包含方法的實現

3、介面可以多實現,類只能單繼承

4、類可以在不同的原始檔之間進行拆分,就是可以有多個檔案

相同點:

介面、類和結構都可以從多個介面繼承

介面類似於抽象父類:繼承介面的任何非抽象型別都必須實現介面的所有成員。

介面和類都可以包含事件、索引器、方法和屬性

c#支援多重繼承麼?

類之間不支援,介面之間支援。

類對介面叫做實現,不叫繼承。

類只能有乙個父類,但可以有多個介面,如果說父類是爹,介面就相當於能力,可以有多個能力,但不能有多個爹。

當程式編譯時沒出錯,執行出現錯誤,我們可以除錯程式,找出錯的原因,然後解決問題。

程式除錯的步驟

1、猜測出錯位置,設定斷點

2、單步執行

3、觀察變數

4、發現問題

5、修正**,重新執行

6、解決問題

ps:程式出現異常或者錯誤時,千萬要冷靜淡定,看下異常提示或錯誤原因,一條條檢查**,或者設定斷電除錯下,看下是不是****寫漏還是寫錯,補上更正。。

---------------------- asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------

黑馬程式設計師 多型

asp.net android ios rel noopener noreferrer target blank asp.net android ios開發 net rel noopener noreferrer target blank net培訓 期待與您交流!多型 理解為事物存在的多種體現形似...

黑馬程式設計師 多型

多型 可理解為事物存在的多種體現形態。人 男人 女人 動物 貓 狗 貓 c new 貓 動物 c new 貓 可理解為父類引用指向子類物件,是多型在物件上的體現性。而過載和覆蓋則是多型在函式上的體現性。下面將從以下四個方面學習多型 1 多型的表現形式 父類的引用指向了自己的子類物件。父類的引用也可以...

黑馬程式設計師 多型

問題點 如何具體理解父類的引用?答 這個父類就是這個子類的另一種形態,可指向 多型的通俗理解 說白了,乙隻貓過來了,可以說 這貓好可愛 也可以說 這小動物很可愛 就是說貓具備了 貓 和 動物 這兩種形態,多型就這樣理解!動物 y new 貓 看到這樣的現象就可以看做是多型的出現了!多型的好處 父類引...