When a virtual method is not overridden, the base class method is used : virtual « Class « C# / CSharp Tutorial






using System; 
 
class BaseClass { 
  // Create virtual method in the base class.  
  public virtual void who() { 
    Console.WriteLine("who() in BaseClass"); 
  } 
} 
 
class Derived1 : BaseClass { 
  // Override who() in a derived class. 
  public override void who() { 
    Console.WriteLine("who() in Derived1"); 
  } 
} 
 
class Derived2 : BaseClass { 
  // This class does not override who(). 
} 
 
class MainClass { 
  public static void Main() { 
    BaseClass baseOb = new BaseClass(); 
    Derived1 dOb1 = new Derived1(); 
    Derived2 dOb2 = new Derived2(); 
 
    BaseClass baseRef; // a base-class reference 
 
    baseRef = baseOb;  
    baseRef.who(); 
 
    baseRef = dOb1;  
    baseRef.who(); 
 
    baseRef = dOb2;  
    baseRef.who(); // calls BaseClass's who() 
  } 
}
who() in BaseClass
who() in Derived1
who() in BaseClass








7.23.virtual
7.23.1.Virtual Methods and Overriding
7.23.2.Override virtual functions
7.23.3.new virtual method
7.23.4.Override virtual method
7.23.5.Define virtual function in base and its subclass
7.23.6.Class inheritance with virtual method
7.23.7.Illustrates versioning: virtual/new
7.23.8.Illustrates polymorphism
7.23.9.Demonstrate a virtual method.
7.23.10.When a virtual method is not overridden, the base class method is used
7.23.11.Virtual method in a multilevel hierarchy
7.23.12.Use virtual methods and polymorphism.
7.23.13.Virtual Accessor