Inheritance lets a derived class reuse members from a base class, adding or overriding behaviour as needed.
public class Animal
{
public string Name { get; }
public Animal(string name) => Name = name;
public virtual string Speak() => $"{Name} makes a sound.";
}
public class Dog : Animal
{
public Dog(string name) : base(name) { }
public override string Speak() => $"{Name} barks!";
}
public class Cat : Animal
{
public Cat(string name) : base(name) { }
public override string Speak() => $"{Name} meows!";
}
Animal[] animals = { new Dog("Rex"), new Cat("Whiskers") };
foreach (var a in animals)
Console.WriteLine(a.Speak());
// Rex barks!
// Whiskers meows!
public class Vehicle
{
public string Brand { get; }
public Vehicle(string brand) => Brand = brand;
public virtual string Info() => $"Brand: {Brand}";
}
public class ElectricCar : Vehicle
{
public int Range { get; }
public ElectricCar(string brand, int range) : base(brand) => Range = range;
public override string Info() => $"{base.Info()} | Range: {Range} km";
}
var ev = new ElectricCar("Tesla", 500);
Console.WriteLine(ev.Info()); // Brand: Tesla | Range: 500 km
public sealed class FinalClass { } // cannot be inherited
public class Base
{
public virtual void Run() { }
}
public class Derived : Base
{
public sealed override void Run() { } // no further overriding
}