C# Override

Interface

Virtual methods are meant to be re-implemented in derived classes. The C# language provides the override modifier for this purpose. This keyword specifies that a method replaces its virtual base method.

Keywords

Example

This program illustrates the difference between an override method in a derived class, and a method that is not an override method. It does nothing useful but helps us learn about override methods.

Letters of the alphabet: ABC

Here:In the example, the class A is the base class. It has the virtual method Y.

Virtual

And:In class B, we override Y. In class C, we implement Y but do not specify that it overrides the base method.

Class
Program that uses override modifier: C#

using System;

class A
{
    public virtual void Y()
    {
	// Used when C is referenced through A.
	Console.WriteLine("A.Y");
    }
}

class B : A
{
    public override void Y()
    {
	// Used when B is referenced through A.
	Console.WriteLine("B.Y");
    }
}

class C : A
{
    public void Y() // Can be "new public void Y()"
    {
	// Not used when C is referenced through A.
	Console.WriteLine("C.Y");
    }
}

class Program
{
    static void Main()
    {
	// Reference B through A.
	A ab = new B();
	ab.Y();

	// Reference C through A.
	A ac = new C();
	ac.Y();
    }
}

Result

B.Y
A.Y
Squares

In this example, the A type is used to reference the B and C types. When the A type references a B instance, the Y override from B is used. But when the A type references a C instance, the Y method from the base class A is used.

Note:The override modifier was not used.
The C.Y method is local to the C type.

Warning:In the above program, the C type generates a warning because C.Y hides A.Y. Your program is confusing and could be fixed.

Tip:If you want C.Y to really "hide" A.Y, you can use the new modifier, as in "new public void Y()" in the declaration.

New Modifier

Research

Note

The C# specification helps us understand override methods. With override, we specialize an "existing inherited virtual method." We provide a new implementation for it. This is at first confusing.

Tip:I recommend writing a test program to see how this works. This may help you understand.

Whereas a virtual method introduces a new method, an override method specializes an existing inherited virtual method by providing a new implementation of that method.

The C# Programming Language

Summary

Object-oriented programming

The override modifier is needed for implementing polymorphic behaviors in derived classes. You can re-implement a virtual base method. This causes the base implementation to be ignored in favor of the "override" method.

And:This polymorphic behavior is core to object-oriented design in many programs.


C#: Method