【发布时间】:2018-04-14 20:15:02
【问题描述】:
我想知道除了 C# 中的方法覆盖之外是否还有其他动态多态性示例。我知道方法覆盖是动态多态的一种形式,但这是 only 的例子吗?
【问题讨论】:
-
dynamic关键字为例
标签: c# asp.net .net asp.net-mvc oop
我想知道除了 C# 中的方法覆盖之外是否还有其他动态多态性示例。我知道方法覆盖是动态多态的一种形式,但这是 only 的例子吗?
【问题讨论】:
dynamic 关键字为例
标签: c# asp.net .net asp.net-mvc oop
请找到下面的多态性示例。我们有一个类“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' 方法将根据对象类型多态地执行。
【讨论】: