Inheritance in C#: Method Overriding Explained
Quick Answer
Method overriding in C# allows a derived class to provide a specific implementation of a method already defined in its base class. It enables polymorphism by letting derived classes modify or extend base class behavior while maintaining a consistent interface.
Learning Objectives
- Explain the purpose of Method Overriding in a practical learning context.
- Identify the main ideas, terms, and decisions involved in Method Overriding.
- Apply Method Overriding in a simple real-world scenario or practice task.
Introduction
Inheritance is a core concept in C# that allows a class to inherit members from another class. Method overriding is a key feature of inheritance that lets derived classes change or extend the behavior of base class methods.
Understanding method overriding is essential for writing flexible and maintainable object-oriented code in C#. This tutorial explains how method overriding works with clear examples and practical tips.
Polymorphism allows methods to do different things based on the object it is acting upon.
What is Method Overriding?
Method overriding occurs when a derived class provides its own implementation of a method that is already defined in its base class. This is done to change or extend the behavior of the base method.
In C#, the base method must be marked with the 'virtual' keyword, and the derived method must use the 'override' keyword.
- Base class method marked as virtual
- Derived class method marked as override
- Allows runtime polymorphism
- Enables dynamic method dispatch
How to Override Methods in C#
To override a method, first declare the method in the base class with the 'virtual' keyword. Then, in the derived class, declare a method with the same signature using the 'override' keyword.
This tells the compiler and runtime to use the derived class's method when called through a base class reference.
- Use 'virtual' in base class method declaration
- Use 'override' in derived class method declaration
- Method signatures must match exactly
- Access modifiers must be compatible
Example of Method Overriding
Here is a simple example demonstrating method overriding in C#.
Practical Example
The base class Animal has a virtual method Speak. The derived class Dog overrides Speak to provide a specific implementation. When called through an Animal reference, the Dog's Speak method executes due to overriding.
Examples
public class Animal {
public virtual void Speak() {
Console.WriteLine("The animal makes a sound.");
}
}
public class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
// Usage
Animal myAnimal = new Dog();
myAnimal.Speak(); // Output: The dog barks.The base class Animal has a virtual method Speak. The derived class Dog overrides Speak to provide a specific implementation. When called through an Animal reference, the Dog's Speak method executes due to overriding.
Best Practices
- Always mark base class methods as virtual if they are intended to be overridden.
- Use the override keyword in derived classes to clearly indicate method overriding.
- Keep method signatures consistent between base and derived classes.
- Avoid overriding methods unnecessarily to maintain code clarity.
- Call base method using base.MethodName() if you want to extend behavior rather than replace it.
Common Mistakes
- Forgetting to mark the base class method as virtual, causing override to fail.
- Mismatching method signatures between base and derived methods.
- Using the new keyword instead of override, which hides the base method rather than overriding it.
- Not using override keyword, leading to confusion and unexpected behavior.
- Overriding methods with incompatible access modifiers.
Hands-on Exercise
Create a Shape Class Hierarchy
Define a base class Shape with a virtual method Draw. Create derived classes Circle and Rectangle that override Draw to print specific messages. Instantiate each and call Draw.
Expected output: Circle and Rectangle print their own Draw messages when called.
Hint: Use 'virtual' in Shape and 'override' in derived classes.
Interview Questions
What is method overriding in C#?
InterviewMethod overriding in C# is when a derived class provides a new implementation of a virtual method defined in its base class, allowing polymorphic behavior.
What keywords are used for method overriding in C#?
InterviewThe base class method is marked with the 'virtual' keyword, and the derived class method uses the 'override' keyword.
What is the difference between method overriding and method hiding in C#?
InterviewMethod overriding replaces the base class method implementation at runtime using 'virtual' and 'override'. Method hiding uses the 'new' keyword and hides the base method without polymorphism.
MCQ Quiz
1. In C#, which keyword must be used in the base class method to allow it to be overridden in a derived class?
Select one option to check your answer.
2. What keyword is used in a derived class method to override a base class virtual method in C#?
Select one option to check your answer.
3. Consider the following code snippet: public class Animal { public virtual void Speak() { Console.WriteLine("Animal speaks"); } } public class Cat : Animal { public override void Speak() { Console.WriteLine("Cat meows"); } } Animal myPet = new Cat(); myPet.Speak(); What will be the output?
Select one option to check your answer.
4. Which of the following is a common mistake when overriding methods in C#?
Select one option to check your answer.
5. If you want to extend the behavior of a base class method rather than completely replace it in a derived class, what should you do inside the overriding method?
Select one option to check your answer.
Key Takeaways
- Method overriding in C# allows a derived class to provide a specific implementation of a method already defined in its base class.
- It enables polymorphism by letting derived classes modify or extend base class behavior while maintaining a consistent interface.
- Inheritance is a core concept in C# that allows a class to inherit members from another class.
- Method overriding is a key feature of inheritance that lets derived classes change or extend the behavior of base class methods.
- Understanding method overriding is essential for writing flexible and maintainable object-oriented code in C#.
Frequently Asked Questions
Can all methods be overridden in C#?
No, only methods marked with the 'virtual', 'abstract', or 'override' keywords can be overridden.
What happens if you don't use the override keyword in the derived class?
If you omit the override keyword, the method hides the base method instead of overriding it, which can cause unexpected behavior.
Can constructors be overridden in C#?
No, constructors cannot be overridden because they are not inherited.
Summary
Method overriding is a fundamental feature of C# inheritance that enables derived classes to customize or extend base class behavior.
By marking base methods as virtual and overriding them in derived classes, you enable polymorphism and dynamic method dispatch.
Proper use of method overriding leads to flexible, maintainable, and extensible object-oriented code.





