用基类类型的变量引用派生类类型的实例(多态)的理解

作者:Hong HuaMin
链接:https://www.zhihu.com/question/463017131/answer/1922569604
来源:知乎

  
    Person p = null;
    if (args[0] == "男")
    {
        p = new Man();
    }
    else
    {
       p = new Woman();
    }
    Console.WriteLine(p.GetName());
public class Person
{
    public string Name { get; set; }
    public virtual string GetName()
    {
        return Name;
    }
}
public class Man : Person
{
    public override string GetName()
    {
        return "Mr. " + Name;
    }
}
public class Woman : Person
{
    public override string GetName()
    {
        return "Mrs. " + Name;
    }
}


一般我们并不把这种关系看作是"父类类型的变量引用子类类型的实例" ,而看作是“统一按父类调用,但是具体对象按子类的实现来执行,这就是多态,

posted @ 2022-01-21 16:53  跨界专家  阅读(78)  评论(0)    收藏  举报