вот уже который раз сталкиваюсь с такой проблемой, когда не понимаю, что лучше использовать. абстрактный класс или интерфейс. например, я храню Ability в списке. у всех способностей есть getName(), getPrice() и т.д. здесь я использовала интерфейс и создавала классы, реализующие его. тут появился вопрос. я ведь точно таким же образом могла сделать не интерфейс, а абстрактный класс. так что лучше и когда?..