C 中物件導向程式設計機制之多型學習筆記

2022-09-26 07:45:13 字數 1708 閱讀 3213

c#的多型性:

我的理解是:同乙個操作,作用於不同的物件時,會有不同的結果,即同乙個方法根據需要,作用於不同的物件時,會有不同的實現。

c#的多型包括:介面多型,繼承多型。

其中繼承多型又包括通過虛擬方法實現的多型和通過抽象方法實現的多型性

例如:基類動物都有吃的方法,但是不同的動物吃的東西就會不一樣,例如狼吃肉,羊吃草,這樣「吃」的這個方法就要在派生類裡面重新實現以下,執行時,通過指向基類的指標,來呼叫實現派生類中的方法。

接下來舉例實現多型性。

1. 介面多型性

把動物「吃」的方法放到乙個介面(ianimal)裡,然後讓具體的動物類(wolf/sheep)繼承這個介面,並根據自己的需要實現這個介面。

**實現:

複製** **如下:

class program

}public class wolf : ianimal

}public class sheep : ianimal

}//介面

public inte***ce ianimal

介面的多型性就是當不同的類繼承了相同的介面以後,都要根據自己的需要重新實現繼承的介面,這樣同樣的方法簽名在不同的類中就會實現不同的操作。

2. 繼承的多型性

2.1.通過虛擬方法實現的多型(virtual,override)

首先要在基類中實現virtual方法,然後在派生類中根據自己的需要用override重寫virtual方法。如果不希望這個方法被繼續重寫,則把這個方法寫成sealed方法。

virtual方法必須在基類中實現。

**實現:

複製** **如下:

class program

}public class wolf : animal

}public class sheep : animal

}&程式設計客棧nbsp;   public class goat : sheep

&nbwww.cppcns.comsp; }

//基類實現虛方法

public class animal

}2.2.通過抽象方法實現的多型(abstract,override)

抽象方法必須定義在抽象類裡。抽象類不能被建立例項。

基類中的抽象方法只能被宣告,不需要實現,所以派生類中重寫抽象方法的時候沒有base方法。

**實現如下:

複製** **如下:

class program

}public class wolf : animal

}public class sheep : animal

}public class goat : sheep

}//基類只需宣告方法

public abstract class animal

總結:1.虛方法重寫的時候可以有base方法(base.eat()),抽象方法重寫的時候沒有base方法,原因是:虛方法必須在基類中實現,抽象方法只在基類中宣告,不需要實現。

2.派生類中可以 不重寫虛方法的實現,但是派生類必須重寫抽象方法的實現,原因同1.

3.包含虛方法的非抽象類可以被建立例項(物件),但是包含抽象方法的抽象類不能被建立例項。

4.繼承介面的派生類必須實現介面的方法,因為介面也是只負責宣告方法,不負責實現。

5.介面的多型性不需要用override重寫方法。

本文標題: c#中物件導向程式設計機制之多型學習筆記

本文位址:

C 物件導向之多型

物件的型別 多型 在c 語言中,基類將型別相關的函式與派生類不做改變直接繼承的函式區分對待,對於某些函式,基類希望它的派生類各自定義適合自身的版本,此時基類就將這些函式宣告成虛函式。c 的多型性 物件導向 oop 的核心思想是多型性 polymorphism 多型這個詞源於希臘語,含義為 多種形式 ...

物件導向之多型

多型即事物存在的多種形態 要有繼承 要有方法重寫 要有父類引用指向子類物件 1,多型中的成員訪問特點之成員變數 編譯看左邊 父類 執行看左邊 父類 2,多型中的成員訪問特點之成員方法 編譯看左邊 父類 執行看右邊 子類 3,多型中的成員訪問特點之靜態成員方法 編譯看左邊 父類 執行看左邊 父類 總結...

物件導向之多型

多型指的是一類事物有多種形態,多型性是指在不考慮例項型別的情況下使用例項 class animals def run self print running class dog animals def run self print dog is running class pig animals de...