Inheritance and Polymorphism
Base Classes
A derived class inherits members from a base class.
inheritance
Inheritance lets one class reuse behavior from another class.
Base Classes
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}");
}
}
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();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
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();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
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();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