A derived class inherits members from a base class.

inheritance Inheritance lets one class reuse behavior from another class.

Base Classes

name
BaseClasses.cs
Replay: real traced execution (multi-file project)
using System;

class Animal
{
    public string Name { get; set; } = "";

    public string Label()
    {
        return "animal:" + Name;
    }
}

class Dog : Animal
{
}

class Program
{
    static void Main()
    {
        string name = "Rex";
        Dog dog = new Dog();
        dog.Name = name;
        string label = dog.Label();

        Console.WriteLine($"name={dog.Name}");
        Console.WriteLine($"label={label}");
    }
}
using System;

class Animal
{
    public string Name { get; set; } = "";

    public string Label()
    {
        return "animal:" + Name;
    }
}

class Dog : Animal
{
}

class Program
{
    static void Main()
    {
        string name = "Milo";
        Dog dog = new Dog();
        dog.Name = name;
        string label = dog.Label();

        Console.WriteLine($"name={dog.Name}");
        Console.WriteLine($"label={label}");
    }
}
using System;

class Animal
{
    public string Name { get; set; } = "";

    public string Label()
    {
        return "animal:" + Name;
    }
}

class Dog : Animal
{
}

class Program
{
    static void Main()
    {
        string name = "Nora";
        Dog dog = new Dog();
        dog.Name = name;
        string label = dog.Label();

        Console.WriteLine($"name={dog.Name}");
        Console.WriteLine($"label={label}");
    }
}
  1. name ← Rex, dog ← Dog, dog.Name ← Rex

    18{19    static void Main()20    {21        string name→ Rex = "Rex"; //@name="Milo", "Nora"22        Dog dog→ Dog = new Dog();23        dog.Name→ Rex = nameRex;24        string label = dogDog.Label();
  2. label ← animal:Rex

    23    dog.Name = name;24    string label→ animal:Rex = dogDog.Label();2526    Console.WriteLine($"name={dog.NameRex}");27    Console.WriteLine($"label={labelanimal:Rex}");28}
    outputname=Rex
    label=animal:Rex
  1. name ← Milo, dog ← Dog, dog.Name ← Milo

    18{19    static void Main()20    {21        string name→ Milo = "Milo";22        Dog dog→ Dog = new Dog();23        dog.Name→ Milo = nameMilo;24        string label = dogDog.Label();
  2. label ← animal:Milo

    23    dog.Name = name;24    string label→ animal:Milo = dogDog.Label();2526    Console.WriteLine($"name={dog.NameMilo}");27    Console.WriteLine($"label={labelanimal:Milo}");28}
    outputname=Milo
    label=animal:Milo
  1. name ← Nora, dog ← Dog, dog.Name ← Nora

    18{19    static void Main()20    {21        string name→ Nora = "Nora";22        Dog dog→ Dog = new Dog();23        dog.Name→ Nora = nameNora;24        string label = dogDog.Label();
  2. label ← animal:Nora

    23    dog.Name = name;24    string label→ animal:Nora = dogDog.Label();2526    Console.WriteLine($"name={dog.NameNora}");27    Console.WriteLine($"label={labelanimal:Nora}");28}
    outputname=Nora
    label=animal:Nora