This keyword from the C# programming language affects virtual
method usage. Virtual methods are meant to be reimplemented in derived classes.
The override
keyword specifies that a method replaces its virtual
base method. We use override
in derived classes to replace inherited methods.
This program illustrates the difference between an override
method in a derived class
, and a method that is not an override
method. It helps us learn about override
methods.
class
A is the base class
. It has the virtual
method Y.class
B, we override
Y. In class
C, we implement Y but do not specify that it overrides the base method.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(); } }B.Y A.Y
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.
class
A is used.override
modifier was not used. The C.Y method is local to the C type.void
Y()
in the declaration.The C# override
modifier is needed for implementing polymorphic behaviors in derived classes. It is used in class
inheritance.
virtual
You can reimplement a virtual
base method. This causes the base implementation to be ignored in favor of the "override
" method.