OOP: Inheritance & Overriding

🔷 C# Programming Lesson 10 Intermediate

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.