public Person(string firstName, string lastName, int socialSecurityNumber)
SocialSecurityNumber = socialSecurityNumber;
public virtual void WakeUp()
Console.WriteLine($"{FirstName} woke up at 9:00am because they have nothing scheduled in the morning.");
Console.WriteLine($"{FirstName} has gone on a walk.");
return $"{FirstName} {LastName}";
public string FirstName { get; set; }
public string LastName { get; set; }
public int SocialSecurityNumber { get; set; }
public class Worker : Person
public Worker(string firstName, string lastName, int socialSecurityNumber, int hourlyPay)
: base(firstName, lastName, socialSecurityNumber)
public override void WakeUp()
Console.WriteLine($"{FirstName} woke up at 6:00am to get to work on time.");
Console.WriteLine($"{FirstName} has clocked in.");
Console.WriteLine($"{FullName} was paid ${HourlyPay}.");
public int HourlyPay { get; set; }
static void Main(string[] args)
var people = new Person[5];
people[0] = new Worker("Sara", "Yoshikawa", 123456789, 12);
people[1] = new Person("AAA", "AAAAAAA", 123456789);
people[2] = new Person("FFF", "FFFFFFF", 123456789);
people[3] = new Worker("LLL", "LLLLLLL", 123456789, 22);
people[4] = new Worker("BBB", "BBBBBBB", 123456789, 18);
for (var i = 0; i < people.Length; i++)
Console.WriteLine(people[i].FullName);
var worker = people[i] as Worker;
if (worker != null) worker.ClockIn();
else people[i].TakeAWalk();