同乙個行為,具有多個不同表現形式或形態的能力。
在物件導向程式設計正規化中,多型性往往表現為"乙個介面,多個功能"。
多型性可以是靜態的或動態的:
在 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...