c物件導向程式設計的多型性有什麼用,C 物件導向程式設計的多型性有什麼用

2021-04-17 20:23:35 字數 3684 閱讀 9427

1樓:匿名使用者

多型是所有語言都是一樣的,c#和別的語言沒有什麼不同主要是子類繼承父類,並重寫父類的方法,實現了不同的操作比如:public class 父類

public class 子類1:父類

}public class 子類2:父類

}應用:

父類 a = new 子類1();

console.write(a.m());

a = new 子類2();

console.write(a.m());

上面都是呼叫a.m(),輸出的結果卻不一樣,這就是多型了

2樓:老采薇可璠

多型性,就是乙個父類的引用變數,可以指向其任意乙個子類物件。

例如,乙個animal類,其子類有cat與dog,然後你建立乙個父類animal的引用animalalpha,然後它可以指向cat的物件cat1,或指向dog的物件dog1。

主要有時在程式設計時,未來有那些子類有時是未知的,這樣在你用乙個父類的引用變數來完成某些功能,就可以相容後來出現的子類。

3樓:匿名使用者

通過繼承,乙個類可以用作多種型別:可以用作它自己的型別、任何基型別,或者在實現介面時用作任何介面型別。這稱為多型性。

c# 中的每種型別都是多型的。型別可用作它們自己的型別或用作 object 例項,因為任何型別都自動將 object 當作基型別。

多型性不僅對派生類很重要,對基類也很重要。任何情況下,使用基類實際上都可能是在使用已強制轉換為基類型別的派生類物件。基類的設計者可以**到其基類中可能會在派生類中發生更改的方面。

例如,表示汽車的基類可能包含這樣的行為:當考慮的汽車為小型貨車或敞篷汽車時,這些行為將會改變。基類可以將這些類成員標記為虛擬的,從而允許表示敞篷汽車和小型貨車的派生類重寫該行為。

簡單的理解,就是可以將鴨子,雞,鳥,豬都作為動物物件來看待,就可以直接命令 「動物.叫」,然後在鴨子中具體實現「叫=瓜瓜」,鳥中「叫=嘰嘰」這樣,就是以動物為基類,實現了鴨子,雞,鳥,豬等派生類的多型。

4樓:匿名使用者

物件導向的多型性詳解

5樓:心之所疲

比如說你早上吃早飯 ,看到有人吃麵條 ,有人喝稀飯,

還有人吃包子

6樓:匿名使用者

一言以蔽之,即:父類引用可以指向子類例項

c#中的封裝 繼承 多型 分別是什麼意思?

7樓:可以叫我表哥

一、封裝:

封裝是實現物件導向程式設計的第一步,封裝就是將資料或函式等集合在乙個個的單元中(我們稱之為類)。被封裝的物件通常被稱為抽象資料型別。

封裝的意義:

封裝的意義在於保護或者防止**(資料)被我們無意中破壞。在物件導向程式設計中資料被看作是乙個中心的元素並且和使用它的函式結合的很密切,從而保護它不被其它的函式意外的修改。

封裝提供了乙個有效的途徑來保護資料不被意外的破壞。相比我們將資料(用域來實現)在程式中定義為公用的(public)我們將它們(fields)定義為私有的(privat)在很多方面會更好。私有的資料可以用兩種方式來間接的控制。

第一種方法,我們使用傳統的存、取方法。第二種方法我們用屬性(property)。

使用屬性不僅可以控制訪問資料的合法性,同時也提供了「讀寫」、「唯讀」、「只寫」靈活的操作方法。

訪問修飾符:

private:只有類本身能訪問.

protected:類和派生類可以訪問.

internal:只有同乙個專案中的類可以訪問.

protected internal:是protected和internal的結合.

public:完全訪問.

二、繼承:

繼承主要實現重用**,節省開發時間。

1、c#中的繼承符合下列規則:

繼承是可傳遞的。如果c從b中派生,b又從a中派生,那麼c不僅繼承了b中宣告的成員,同樣也繼承了a中的成員。object類作為所有類的基類。

派生類應當是對基類的擴充套件。派生類可以新增新的成員,但不能除去已經繼承的成員的定義。

建構函式和析構函式不能被繼承。除此之外的其它成員,不論對它們定義了怎樣的訪問方式,都能被繼承。基類中成員的訪問方式只能決定派生類能否訪問它們。

派生類如果定義了與繼承而來的成員同名的新成員,就可以覆蓋已繼承的成員。但這並不因為這派生類刪除了這些成員,只是不能再訪問這些成員。

類可以定義虛文法、虛屬性以及虛索引指示器,它的派生類能夠過載這些成員,從而實現類可以展示出多型性。

2、new關鍵字

如果父類中宣告了乙個沒有friend修飾的protected或public方法,子類中也宣告了同名的方法。則用new可以隱藏父類中的方法。

3、base關鍵字

base 關鍵字用於從派生類中訪問基類的成員:

呼叫基類上已被其他方法重寫的方法。

指定建立派生類例項時應呼叫的基類建構函式。

三、多型

1、多型:同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果。在執行時,可以通過指向基類的指標,來呼叫實現派生類中的方法。

編譯時的多型性:

編譯時的多型性是通過過載來實現的。對於非虛的成員來說,系統在編譯時,根據傳遞的引數、返回的型別等資訊決定實現何種操作。

執行時的多型性:

執行時的多型性就是指直到系統執行時,才根據實際情況決定實現何種操作。c#中,執行時的多型性通過虛成員實現。

編譯時的多型性為我們提供了執行速度快的特點,而執行時的多型性則帶來了高度靈活和抽象的特點。

2、實現多型:

介面多型性。

繼承多型性。

通過抽象類實現的多型性。

3、override關鍵字:

重寫父類中的virtual修飾的方法,實現多型。

8樓:定復

封裝嗎···簡單說就是比如private修飾的那些,然後還可以用屬性來提供get和set,這東西一下說不清,也可以說是對外可見的程度吧·····

繼承,比如你父母生你,你身上有你父母的特點,也有你自己的特點,你繼承了你父母的特點這就是繼承,意思一樣,多型·······這個你要自己找東西理解了····

9樓:匿名使用者

和c#無關,多查查物件導向的資料吧。

10樓:可愛鬼蠱殘狼

分別代表這種東西的好壞

物件導向的三大特徵(封裝,繼承,多型)通俗一點怎麼理解c#結合

11樓:匿名使用者

實際上物件導向還有其他重要的特徵,國內的教材都只是說三大特徵。

封裝:1.指將資料和相應的函式放到一起形成乙個類的過程。相當於將操作結構體的函式放到結構體中。

2.指利用一切語言特徵將類的實現細節隱藏起來的過程。

繼承:就是在寫**的過程中,常常會發現某些現有類有些方面有很大相似性(比如實現類似的功能、擁有相同的函式等等),這時候我們建立另外乙個類(基類、父類)來描述這種相似性,所有派生自該基類的派生類都具備這種相似性。通過繼承,我們在乙個類(或者乙個類層次結構中)描述了不同類之間的相似性,因此減少了**的冗餘性,不然相同的概念要在不同地方重複。

多型:這個概念是與繼承密切相關的,是指同乙個成員函式在不同的派生類中有不同的行為(定義),也就是描述了相似中的差異。

什麼是物件導向的多型性,什麼叫做物件導向的 多型性???

多型是所有語言都是一樣的,c 和別的語言沒有什麼不同主要是子類繼承父類,並重寫父類的方法,實現了不同的操作比如 public class 父類 public class 子類1 父類 public class 子類2 父類 應用 父類 a new 子類1 console.write a.m a ne...

C 中引用和多型性的實現,什麼是多型性,C 中是如何實現多型的

由於dog是animal的子類,而animal的gettype 和 getvoice 都是虛函式,而實現了多型性,而void type animal a 函式 中的引數是animal的引用物件,由於animal是dog的父類,而父類的物件可以接收子類的物件,所以當呼叫type d 這個函式時,typ...

用C 中物件導向的程式設計方法做棧的實

定義數字類抽象基來類,宣告轉換的自四個函式。bai公有派生出各種進製的數du字子zhi類。在子類裡寫實現。dao。甚至可以使用十進位制為基準,任何轉換都支援兩個函式 todecimal 和 convertdecimal 也就是每種進製都支援這兩個函式,這裡同樣使用上面的派生方式。這樣,互相轉換就是兩...