C 的靜態多型性和動態多型性(學習心得 20)

2021-10-07 13:18:12 字數 3179 閱讀 6704

同乙個行為,具有多個不同表現形式或形態的能力。

在物件導向程式設計正規化中,多型性往往表現為"乙個介面,多個功能"。

多型性可以是靜態的或動態的:

在 c# 中,每個型別都是多型的,因為包括使用者定義型別在內的所有型別都繼承自 object。

同乙個事件發生在不同的物件上會產生不同的結果。

超級小白友好,講解c#基礎,每集5分鐘輕鬆學習,拒絕從入門到放棄!

二、動態多型性

在編譯時,函式 和 物件 的 連線機制 被稱為:早期繫結(靜態繫結)。

c# 中兩種技術實現靜態多型性:

同乙個範圍內對相同的函式名有多個定義。

函式的定義必須彼此不同,可以是引數列表中的引數型別不同,也可以是引數個數不同。

不能過載只有返回型別不同的函式宣告。

例:不同引數個數

using system;

public int

add(

int a,

int b)

} class program

}}

執行結果:

add1 :

3add2 :

6

例:不同引數型別

using system;

", i );}

void

print

(double f)

", f);}

void

print

(string s)

", s);}

static

void

main

(string[

] args)

}}

執行結果:

輸出整型:

1輸出浮點型:

1.23

輸出字串: hello runoob

使用關鍵字abstract建立抽象類,用於提供介面的部分類的實現。

當乙個 派生類 繼承自該抽象類時,實現即完成。

**抽象類 **包含 抽象方法,抽象方法可被派生類實現。

派生類具有更專業的功能。

關於抽象類的規則:

抽象類介面由子類繼承

由類實現

包含:方法宣告,方法實現

包含:方法宣告

變數:普通變數

變數:公共靜態變數

抽象級別低

抽象級別高

包含:方法,屬性

包含:抽象方法,不可變常量

用於抽象類別

用於抽象功能

用 abstract 定義

用 inte***ce 定義

子類只能繼承乙個抽象類

類可以實現多個介面

子類必須實現抽象方法

類必須實現介面的所有成員

我自己理解的為什麼要使用抽象類: 例:

using system;

class rectangle: shape

public override int area (

)// 這裡需要用到 override

} class rectangletester

",a);

console.

readkey()

;}}}

執行結果:

rectangle 類的面積:

面積: 70

當有乙個定義在類中的函式需要在繼承類中實現時,可以使用虛方法

使用關鍵字virtual宣告。

虛方法可以在不同的繼承類中有不同的實現。

對虛方法的呼叫是在執行時發生的。

例:建立 shape 基類,並建立派生類 circle、 rectangle、********, shape 類提供乙個名為 draw 的虛擬方法,在每個派生類中重寫該方法以繪製該類的指定形狀。

using system;

using system.collections.generic;

public class shape

public int y

public int height

public int width

// 虛方法

public virtual void

draw()

}class circle : shape

}class rectangle : shape

}class ******** : shape

}class program

;// 使用 foreach 迴圈對該列表的派生類進行迴圈訪問,並對其中的每個 shape 物件呼叫 draw 方法

foreach (var shape in shapes)

console.

writeline

("按下任意鍵退出。");

console.

readkey()

;}}

執行結果:

畫乙個長方形

執行基類的畫圖任務

執行基類的畫圖任務

畫乙個三角形

畫乙個圓形

按下任意鍵退出。

例:通過虛方法 area() 來計算不同形狀影象的面積

using system;

public virtual int

area()

} class rectangle: shape

public override int area ()}

class ********: shape

public override int

area()

} class caller

", a);}

} class tester

}}

執行結果:

rectangle 類的面積:

面積:70

******** 類的面積:

面積:25

C 學習 多型性

多型性是指為乙個函式名關連多種含義的能力。具體來說,多型性指的是通過名為 晚期繫結 的一種特殊機制來為函式名稱關聯多個含義。多型性是物件導向程式設計的核心概念之一。這裡先舉乙個例子來,定義乙個基類figure類,基類中有個成員函式center,作用是將乙個圖形放在介面中心,具體實現是先呼叫刪除函式,...

c 多型性,多型,和過載

多型性分兩個部分 1.靜態多型性 通過過載實現,同名不同參。2.動態多型性 多型,子類覆蓋父類方法,執行時根據指標的型別來決定最終執行的方法。即 虛函式。過載是同名不同參,引數完全一樣順序不同也叫同名不同參。參考 在同乙個作用域內,可以宣告幾個功能類似的同名函式,但是這些同名函式的形式引數 指引數的...

Python多型和多型性

python多型和多型性 python 中的多型是指一類事務有多種形態。比如動物有多種形態,人,狗,貓,等等。import abc class animal metaclass abc.abcmeta 同一類事物 動物 abc.abstractmethod def talk self pass cl...