OOP: Inheritance & Overriding
Inheritance enables code reuse by deriving child classes from parent classes. C# uses virtual and override keywords to implement dynamic method overriding.
1 Virtual, Override, and Base Constructor Chaining
C# enforces strict method overriding rules to prevent compile errors:
- virtual: You must explicitly mark a method as `virtual` in the parent class to allow child classes to override it.
- override: The child class must use the `override` keyword to redefine the parent method.
- base: Used to call the parent constructor (`: base(params)`) or invoke parent methods (`base.Method()`).
2 Inheritance Code
Let's run a program illustrating inheritance and dynamic overrides:
C# — Inheritance
▶ Run Code
using System;
class Animal {
public string Name { get; set; }
public Animal(string name) {
Name = name;
}
public virtual void Speak() {
Console.WriteLine("Generic animal noise.");
}
}
class Dog : Animal {
// Chain constructor call to parent using 'base'
public Dog(string name) : base(name) {}
public override void Speak() {
Console.WriteLine(Name + " says: Woof! Woof!");
}
}
class Program {
static void Main() {
Animal dog = new Dog("Buddy");
dog.Speak(); // Runs Dog's Speak method
}
}
3 Code Challenge
Challenge: Write a parent class called `Vehicle` and a child subclass called `Truck`. Override a virtual method `StartEngine()` to print "Diesel roar!", and verify base construction chains.