Four layers of class hierarchy


   

/*
 * C# Programmers Pocket Consultant
 * Author: Gregory S. MacBeth
 * Email: gmacbeth@comporium.net
 * Create Date: June 27, 2003
 * Last Modified Date:
 */
using System;

namespace Client.Chapter_5___Building_Your_Own_Classes
{
  public class MyMainClass3
  {
    static void Main(string[] args)
    {
      //The function called is based
      //upon the type called by new.
      A MyA = new D();
      B MyB = new C();

      MyA.Display();    //Calls D Display  
      MyB.Display();    //Calls C Display
      // followed by B's Display //via the base keyword
    }
  }
  class A
  {
    public virtual void Display()
    {
      Console.WriteLine("Class A's Display Method");
    }
  }
  class B: A
  {
    public override void Display()
    {
      Console.WriteLine("Class B's Display Method");
    }
  }
  class C: B
  {
    public override void Display()
    {
      Console.WriteLine("Class C's Display Method");
      base.Display();
    }
  }
  class D: C
  {
    public override void Display()
    {
      Console.WriteLine("Class D's Display Method");
    }
  }

}