A derived class can add members while keeping inherited members.

derived class A derived class extends a base class with more state or behavior.

Derived Classes

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

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

class PremiumMember : Member
{
    public int BonusPoints { get; set; }
}

class Program
{
    static void Main()
    {
        int bonus = 10;
        PremiumMember member = new PremiumMember();
        member.Name = "Ari";
        member.BonusPoints = bonus;
        string summary = member.Name + ":" + member.BonusPoints;

        Console.WriteLine($"bonus={bonus}");
        Console.WriteLine($"summary={summary}");
    }
}
using System;

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

class PremiumMember : Member
{
    public int BonusPoints { get; set; }
}

class Program
{
    static void Main()
    {
        int bonus = 5;
        PremiumMember member = new PremiumMember();
        member.Name = "Ari";
        member.BonusPoints = bonus;
        string summary = member.Name + ":" + member.BonusPoints;

        Console.WriteLine($"bonus={bonus}");
        Console.WriteLine($"summary={summary}");
    }
}
using System;

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

class PremiumMember : Member
{
    public int BonusPoints { get; set; }
}

class Program
{
    static void Main()
    {
        int bonus = 20;
        PremiumMember member = new PremiumMember();
        member.Name = "Ari";
        member.BonusPoints = bonus;
        string summary = member.Name + ":" + member.BonusPoints;

        Console.WriteLine($"bonus={bonus}");
        Console.WriteLine($"summary={summary}");
    }
}
  1. bonus ← 10, member ← PremiumMember, member.Name ← Ari, member.BonusPoints ← 10

    14{15    static void Main()16    {17        int bonus→ 10 = 10; //@bonus=5, 2018        PremiumMember member→ PremiumMember = new PremiumMember();19        member.Name→ Ari = "Ari";20        member.BonusPoints→ 10 = bonus10;21        string summary→ Ari:10 = member.NameAri + ":" + member.BonusPoints10;2223        Console.WriteLine($"bonus={bonus10}");24        Console.WriteLine($"summary={summaryAri:10}");25    }
    outputbonus=10
    summary=Ari:10
  1. bonus ← 5, member ← PremiumMember, member.Name ← Ari, member.BonusPoints ← 5

    14{15    static void Main()16    {17        int bonus→ 5 = 5;18        PremiumMember member→ PremiumMember = new PremiumMember();19        member.Name→ Ari = "Ari";20        member.BonusPoints→ 5 = bonus5;21        string summary→ Ari:5 = member.NameAri + ":" + member.BonusPoints5;2223        Console.WriteLine($"bonus={bonus5}");24        Console.WriteLine($"summary={summaryAri:5}");25    }
    outputbonus=5
    summary=Ari:5
  1. bonus ← 20, member ← PremiumMember, member.Name ← Ari, member.BonusPoints ← 20

    14{15    static void Main()16    {17        int bonus→ 20 = 20;18        PremiumMember member→ PremiumMember = new PremiumMember();19        member.Name→ Ari = "Ari";20        member.BonusPoints→ 20 = bonus20;21        string summary→ Ari:20 = member.NameAri + ":" + member.BonusPoints20;2223        Console.WriteLine($"bonus={bonus20}");24        Console.WriteLine($"summary={summaryAri:20}");25    }
    outputbonus=20
    summary=Ari:20