c#中动态多态的例子

时间:2017-11-02 10:30:52

标签: c# asp.net .net asp.net-mvc oop

我想知道除了C#中的方法覆盖之外是否还有动态多态的其他示例。我理解方法覆盖是动态多态的一种形式,但这是唯一的例子吗?

1 个答案:

答案 0 :(得分:1)

请查看下面的多态性示例。我们有一个类'SalaryCalculator',它有一个方法'Calculate',参数'IEmployee'。 '计算'方法不是什么'IEmployee'。它可以是任何类实现'IEmployee',这是多态。

 class Program
{
    static void Main(string[] args)
    {
        Salarycalculator salaryCalculator = new Salarycalculator();
        salaryCalculator.calculate(new Architect());
    }


}

public class Salarycalculator
{
    public void calculate(IEmployee employee)
    {
        employee.CalculateSalary();
    }
}

public interface IEmployee
{
    void CalculateSalary();
}



public class Developer : IEmployee
{
    public void CalculateSalary()
    {

    }
}

public class Architect : IEmployee
{
    public void CalculateSalary()
    {

    }
}

}

运行时多态性不适用于对象初始化,而是接收对象的位置。在此示例中,'calculate(IEmployee employee)'其中'Calculate'方法仅在运行时知道'IEmployee'的类型。它可以是'Developer'或'Architect'类型,这意味着'Calculate'方法将根据对象类型以多态方式执行。