Я не видел примера, но видно что ты слишком серьезно воспринял базовый пример. Кроме наследования существует огромное количество других паттернов, но в любом случае как ты говоришь определять действие в интерфейсе это абсолютно другой паттерн стратегия называется
не, я не имел в виду что интерфейс описывает какое-то действие (которое требуется смоделировать в коде), например алгоритм, а про поведение как вообще свойственное обьектам, что будет определять его тип, то есть просто реализацию методов
я о том, что переопределение метода в классе наследнике разве не нарушает субтипирование, если таким образом обьект, имея (включительно) тот же интерфейс (в общем смысле), что и обьекты класса предка, будет проявлять иное поведение при вызове методов, входящих в этот интерфейс
Блин, я сейчас понял, вот и моя ошибка - класс игрока в примере то абстрактный по идее, у него нет инстансов, реализация методов в нем - просто реализация по умолчанию, и множество значений игроков все равно сумма множеств возможных обьектов наследников этого класса, а у самого этого класса конфликтующих обьектов нет