Просто напоминание:
Наследование имеет две стороны: повторное использование и переопределение кода .
Первый решает проблему дублирования (выглядит как ваша идея), а второй определяет для одной и той же концепции различные реализации поведения.
Конечно, в некоторых случаях вы можете извлечь выгоду с обеих сторон.
О вашем вопросе:
Было бы неплохо представить данные с использованием трех классов
наследование от базового класса?
Если A, B и C предназначены только для хранения данных (поэтому нет логики / поведения внутри) с учетом общих полей (то есть всех полей, кроме field1, field2 и field3) в базовом классе, смысл. Это избавит вас от дублирования, а дублирование - это неприятный запах.
С другой стороны, если A, B и C также имеют логику, вы должны вводить базовый класс, только если эти классы представляют одну и ту же общую концепцию. В противном случае ваша абстракция неверна и может привести к беспорядочному использованию, когда мы пытаемся манипулировать единообразно (через базовый класс) вещами, которые на самом деле являются разными понятиями.