Lesson 34 +10 XP

C# Inheritance

C# Inheritance

Inheritance lets one class (the derived class) reuse fields and methods from another class (the base class).

The colon syntax

class Vehicle  // base class
{
  public string brand = "Ford";
  public void honk()
  {
    Console.WriteLine("Tuut, tuut!");
  }
}

class Car : Vehicle  // derived class
{
  public string modelName = "Mustang";
}

Car gets everything Vehicle has, plus its own members:

static void Main(string[] args)
{
  Car myCar = new Car();
  myCar.honk();
  Console.WriteLine(myCar.brand + " " + myCar.modelName);
}

Output:

Tuut, tuut!
Ford Mustang

Why inheritance?

  • Reuse code - don't rewrite what a base class already does.
  • Extend behavior - a Car is a Vehicle with extras.
  • Create is-a relationships: a Car is a Vehicle.

Sealed classes

A sealed class cannot be inherited:

sealed class Vehicle { }
class Car : Vehicle { }   // error: Vehicle is sealed

The base keyword

Inside a derived class, base refers to the base class. It's used to call base constructors and members.

Note on multiple inheritance

C# classes support single inheritance - one class can extend only one base class. (Interfaces provide a way around this, coming soon.)

TL;DR

  • class Derived : Base creates inheritance.
  • The derived class gets all base members.
  • Inheritance creates is-a relationships.
  • sealed prevents inheritance.