How to make different characters have different skills in an SRPG?

I’m making an SRPG where each character 3 options: Move, Attack and Special. When i click a character it opens a menu where I choose what to use(Move, Attack, Special) and when a button is clicked that method is called(Move(), Attack(), Special()). What i would like to do is to use a different Special() method, based on what character is using it. I tried using polymorphism like this:

public class PlayableCharacter : MonoBehaviour {

//Character stats
int x;
int y;
int moveSpeed;

public void Move()
//Move the character

public void Attack()
//Attack method

public void Special()
//Use special


public class Mage : PlayableCharacter {

public override void Special()
Debug.Log("Used Mage Special.");


I attach these 2 scripts to a Mage GameObject. And when i call the Special() method within the PlayableCharacter script inside the Mage GameObject, only the parent Special() is used.
I’m aware why this doesn’t work, but is there another way of doing this so I don’t have to use an if statement for each type of character?

Just make your Special method as virtual

public virtual void Special () {
    //Default implementation

and then override in Mage class

public override void Special () {
    //Implementation based on Mage's ability

This is actually what I was looking for. So my solution would be to do this when Special button is clicked:


My mistake was attaching both PlayableCharacter and Mage scripts to the Mage GameObject instead of attaching just the Mage script. Thanks anyway