"Covariant Return Type Override"

abstract class Player {
	public abstract IWeapon GetEquippedWeapon();
}

class MonsterPlayer : Player {
	// Here we can specify that the weapon will always be a ClawsWeapon for a MonsterPlayer:
	public override ClawsWeapon GetEquippedWeapon() {
		// ...
	}
}


Code snippet taken from "Two Decades of C#: A Reference - C# 9".