Каждый раз, когда вы рассматриваете одиночное наследование как ответ, вы можете столкнуться с проблемами.Я думаю, что вы на самом деле хотите использовать множественное наследование (в форме интерфейсов).Вы должны рассмотреть возможность объявления интерфейсов, которые позволяют вам выполнять определенные действия, и, возможно, абстрактных классов, которые реализуют некоторые из этих интерфейсов, которые «группируют» логические классы вместе.
Как общее практическое правило, если B является A, он унаследует все A. Но если B является A, за исключением x, y и z, вы можете выбросить исключение UnsupportedOperationException, которое допустимо вВ некоторых случаях, но вы должны подумать о реструктуризации вашей иерархии, чтобы она имела больше смысла.