[C#每天进步一点点] 多态的一点思考

问题思考:

如果在父类class Base的非虚方法public A()中调用了虚方法B(),而在子类class Derived中重写了该虚方法,那么Derived.A()中调用的是虚函数父类中的实现还是子类中的实现?

结论:子类中的实现。

实例证明:


namespace Polymiorphism
{
    
class Base
    {
        
public virtual void Print()
        {
            Console.WriteLine(
"Print in base class.");
        }

        
public void PrintWarp()
        {
            Print();
        }
    }

    
class Derived:Base
    {
        
public override void Print()
        {
            Console.WriteLine(
"Print in derived class");
        }
    }
    
class Program
    {
        
static void Main(string[] args)
        {
            Base derived 
= new Derived();
            derived.PrintWarp();
        }
    }
}

输出结果:

Print in derived class

posted @ 2008-12-25 17:34  Ypeng  阅读(192)  评论(0编辑  收藏  举报