我想知道除了C#中的方法覆盖之外是否还有动态多态的其他示例。我理解方法覆盖是动态多态的一种形式,但这是唯一的例子吗?
答案 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'方法将根据对象类型以多态方式执行。