多態指同一操作作用於不同類的實例,不同的類進行不同的解釋,產生不同的執行結果。
多態通過派生類重寫基類中的虛函數型方法來實現的
多態分為兩種類型
編譯時的多態(靜態多態)
運行時的多態(動態多態)
實現多態的方式:
接口多態性
多個類可實現相同的“接口”,而單個類可以實現一個或多個接口。接口描述類需要實現的方法,屬性和事件,以及每個成員需要接收和返回的參數類型,這些成員的特定實現都由實現類去實現。
通過繼承實現多態性
多個類可以從單個基類繼承,通過繼承,類在基類所在實現中接收基類的所有方法,屬性和事件。C#通過繼承提供多態性
通過抽象類來實現多態性
抽象類本身不能被實例化,必須被繼承,該類的實現由派生類實現,
class Program
{
static void Main(string[] args)
{
Employee base1 = new Employee();
base1.CalculatePlay();
Employee base2 = new SalariedEmployee();//多態
base2.CalculatePlay();
EalariedEmployee Ebase = new SalariedEmployee();//多態
Ebase.CalculatePlay();
SalariedEmployee base3 = new SalariedEmployee();
base3.CalculatePlay();
}
}
public class Employee
{
virtual public void CalculatePlay()
{
Console.WriteLine("Employee");
}
}
class SalariedEmployee : Employee
{
public override void CalculatePlay()
{
Console.WriteLine("Salary");
}
public void ss()
{
Console.WriteLine("111");
}
}
class EalariedEmployee : Employee
{
public override void CalculatePlay()
{
Console.WriteLine("Ealaried");
}
}