Есть хороший способ определить рациональность использования наследования. Для этого нужно ответить на ряд вопросов:
- оба класса из одной предметной области;
- наследник отвечает принципу подстановки Барбары Лисков;
- код наследуемого класса необходим либо хорошо подходит для наследника;
- наследник в основном добавляет логику.
Чем больше положительных ответов, тем больше вероятность, что вы не промахнетесь с выбором наследования.
Конкретно в вашем случае я рискну предположить, что использование наследования излишне, и даже может стать бомбой замедленного действия при дальнейшем развитии системы. Здесь наследование выступает в роли выбора возможных алгоритмов действий пользователя в системе и введение новых ролей может оказаться очень дорогим, особенно если один пользователь должен будет обладать сразу несколькими ролями.