Polymorphism Example

CSharp · Console

/Program.cs

using System;

public class Program
{
  // Base Class
  class Hero {
    public string Weapon { get; set; }
    public string Name { get; set; }

    public Hero(string name) {
      Name = name;
	  Weapon = "pair of fists";
    }

    public virtual void Attack() {
		Console.WriteLine("Punch Punch!");
    }
  }

  // Derived Classes
  class Rogue : Hero {
    public Rogue(string name) : base(name) {
      Name = name;
      Weapon = "dagger";
    }

    public override void Attack() {
      Console.WriteLine("Stab Stab!");
    }
  }

  class Archer : Hero {
    public Archer(string name) : base(name) {
      Name = name;
      Weapon = "bow & arrows";
    }

    public override void Attack() {
      Console.WriteLine("Pew Pew!");
    }
  }

  class Warrior : Hero {
    public Warrior(string name) : base(name) {
      Name = name;
      Weapon = "sword";
    }

    public override void Attack() {
      Console.WriteLine("Slash Slash!");
    }
  }

  public static void Main() {
    Hero avatar = new Rogue("Bob");
    Console.WriteLine("{0}'s weapon is a {1}.", avatar.Name, avatar.Weapon);
    // Bob's weapon is a dagger.
    avatar.Attack();
    // Stab Stab!
  }
}
;