Types Of Overriding In C# With Examples - EduCBA
Maybe your like

Introduction to Overriding in C#
Overriding in C# is the re-implementation of a base class method in a derived class. In this, the base class method is overridden in child class. The derived class method has the same name and signature as base class method. Overriding is useful in achieving Runtime polymorphism.
There are a few keywords that are used in method overriding.
Watch our Demo Courses and Videos
Valuation, Hadoop, Excel, Mobile Apps, Web Development & many more.
1. Virtual – This keyword is used with a base class which signifies that the method of a base class can be overridden.
public virtual void Method() { // implementation }2. Override – This keyword is used with a derived class which signifies that derived class overrides a method of a base class.
public override void Method() { // implementation }3. Base – This keyword is used in a derived class to call the base class method.
public override void Method() { base.Method(); // implementation }How Overriding Works in C#?
Below is an example of how we can implement overriding in C#.
class Parent { public virtual void Demo() // base class { Console.WriteLine(“This is parent”); } } class Child: Parent { public override void Demo() // derived class { Console.WriteLine(“This is child”); } }In the above example there are two classes, one is base class or parent class and the other is derived class or we can say, child class. A base class method is derived in child class. In this, method in a parent is virtual which means it can be overridden by the child class. Override in a child means this method is the same as the parent class method with the same method signature.
Types of Overriding in C#
Below are the examples which show overriding with various keywords.
Example 1 – Without Virtual and Override Keywords
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Overriding { class Bird // base class { public void fly() // base class method { Console.WriteLine("Birds are flying"); } } class Peacock : Bird // derived class { public new void fly() // derived class method { Console.WriteLine("Peacock is flying"); } } class Program { // main method static void Main(string[] args) { Bird b = new Peacock(); b.fly(); Console.ReadLine(); } } }In the above example, no keyword is used in both bases as well as derived methods.
Also in main method, parent reference is used to call the child method. So in this case when no keyword is used, the parent method is called instead of a child method. So the output will be
Output :

Example 2 (a)- With Virtual and Override Keywords
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Overriding { class Bird // base class { public virtual void fly() // base class method { Console.WriteLine("Birds are flying"); } } class Peacock : Bird // derived class { public override void fly() // derived class method { Console.WriteLine("Peacock is flying"); } } class Program { // main method static void Main(string[] args) { Bird b = new Peacock(); b.fly(); Console.ReadLine(); } } }In this example, virtual is used in the base class which means it gives authority to child class to implement the method in its own way. In a derived class, override is used which means that the child method is the override method. Both the methods are the same with the same name and same method signature but the implementation part is different. In this example also, parent reference is used to call the child method. But as a parent is a method is virtual so the child method is called first instead of the parent method. So the output will be
Output :
![]()
Example 2 (b) – Virtual and Override Keywords
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Overriding { class Bird // base class { public virtual void fly() // base class method { Console.WriteLine("Birds are flying"); } } class Peacock : Bird // derived class { public override void fly() // derived class method { Console.WriteLine("Peacock is flying"); } } class Program { //main method static void Main(string[] args) { Peacock p = new Peacock(); p.fly(); Console.ReadLine(); } } }This example is the same as the previous example but this child, method is used for reference.
Output :

Example 3 – With Base Keyword
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Overriding { class Bird // base class { public virtual void fly() // base class method { Console.WriteLine("Birds are flying"); } } class Peacock : Bird // derived class { public override void fly() // derived class method { base.fly(); // base is use to call parent method Console.WriteLine("Peacock is flying"); } } class Program { static void Main(string[] args) { Peacock p = new Peacock(); p.fly(); Console.ReadLine(); } } }In the above example, the base is used in a derived class to call the base class method. So in this base method is called first and then the derived method.
Output :

Example 4 – Abstract Classes with Overriding
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Overriding { abstract class Calculate { public abstract int sum(); } class Values : Calculate // derived class { int val1; int val2; public Values(int a = 0, int b = 0) { val1 = a; val2 = b; } public override int sum() { Console.WriteLine("sum of two values"); return (val1 + val2); } } class Program { static void Main(string[] args) { Values v = new Values(10, 20); int a = v.sum(); Console.WriteLine(a); Console.ReadLine(); } } }In the above example, an abstract method is used. An abstract class is implemented by the derived class which contains an abstract method.
Output :

Rules for Method Overriding
- The method signature of a derived class should be the same as a base class.
- Overriding is not possible in the same class.
- Access modifiers must be the same for virtual methods and override methods.
- The virtual keyword is used in the base class method and Override is used in a derived class method.
- The base class method should not be static.
Conclusion
Overriding is useful in runtime polymorphism. It allows derived class to implement a base class method in its own way. So the method implementation is different of derived class from its base class. The overridden method can be virtual, override or abstract.
Recommended Articles
This is a guide to Overriding in C#. Here we discuss how to use overriding and different keywords for Overriding in C# along with Examples. You can also go through our other suggested articles –
- Exception Handling in C#
- Arrays in C#
- Method Overriding in C#
- Variables in C#
Tag » What Is Override In C#
-
Override Modifier - C# Reference - Microsoft Docs
-
Knowing When To Use Override And New Keywords - C# ...
-
What Is Override? - Definition From Techopedia
-
C# | Method Overriding - GeeksforGeeks
-
C# Override Method - Dot Net Perls
-
C# Override Keyword - Tutlane
-
C# Method Overriding - Javatpoint
-
Understanding Virtual, Override And New Keyword In C# - DotNetTricks
-
Method Overriding In C#
-
Difference Between Override And New In C#
-
How To Override Methods In C#. Method Overriding, In ... - Medium
-
Method Overriding In C# Examples - Dot Net Tutorials
-
Overloading Vs. Overriding In C# | HackerNoon
-
Difference Between New And Override - Stack Overflow