Inheritance and Polymorphism
Derived Classes
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
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}");
}
}
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
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
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