Стандартный шаблон для решения этой проблемы:
public interface IPiece
{
int Points { get; }
char Letter { get; }
}
public class King : IPiece
{
public int Points => 0;
public char Letter => 'K';
}
Нет необходимости использовать static
вообще, поскольку 0
и K
являются литералами и, следовательно, (например, static
) эффективно сохраняются только один раз для каждого класса.
Обратите также внимание, что я удалил ваш abstract class
- он бесполезен, поскольку в нем нет логики.abstract class
без логики концептуально эквивалентен interface
(который у вас уже есть), поэтому на данном этапе это не нужно.
Если вы действительно хотите использовать static
, тогда вы можете использовать:
public class King : IPiece
{
private static int points = 0;
private static char letter = 'K';
public int Points => points;
public char Letter => letter;
}
, но в этом нет особой выгоды.