【问题标题】:Examples of dynamic polymorphism in c#c#中动态多态的例子
【发布时间】:2018-04-14 20:15:02
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

请找到下面的多态性示例。我们有一个类“SalaryCalculator”,它有一个带有参数“IEmployee”的方法“Calculate”。 “计算”方法不知道“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' 方法将根据对象类型多态地执行。

【讨论】:

  • 嗨,对不起,我是新手。当我们将对象类型指定为 Architect() 类型时,它是如何动态分配的?
  • 运行时多态性不适用于对象初始化,而是用于接收对象的地方。在示例中,我给出了“calculate(IEmployee employee)”,其中“Calculate”方法仅在运行时才知道“IEmployee”的类型。我已经编辑了答案以解释更多。
猜你喜欢
  • 2019-01-24
  • 1970-01-01
  • 2021-06-20
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 2013-10-07
相关资源
最近更新 更多