HomeSearch

C# Override Method

Use the override keyword on virtual base methods to specify which methods are called.
Override affects virtual method usage. Virtual methods are meant to be re-implemented in derived classes. The override keyword specifies that a method replaces its virtual base method.Keywords
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.

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
C# program that uses override modifier 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(); } } Output B.Y A.Y
Notes, 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: 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
Research. 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.

Quote: 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. 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.
© 2007-2019 Sam Allen. Every person is special and unique. Send bug reports to info@dotnetperls.com.
Home
Dot Net Perls