Если у вас всегда экземпляр класса User имеет одинаковые методы и поля, то и классов отдельных не нужно делать. Тем более что конкретно в вашем примере функционал юзера, можно отделить ролями/правами, которые могут быть реализованы позднее отдельно.
Макс Васильев, думаю, еще, было бы правильнее сделать метод для проверки роли, и передавать роль как аргумент, а не отдельно писать код проверки роли. А вдруг вы захотите проверить есть ли в пользователя одна из ролей (admin, manager, ...), например:
Можно еще этот метод вынести в trait, и передавать методу еще экземпляр (объект) пользователя. Тогда вы, подключая трей в свои классы, сможете в любом месте проверять роль пользователя.
Но это так, отступление от темы, куда можно углубляться еще далеко....
Есть хороший способ определить рациональность использования наследования. Для этого нужно ответить на ряд вопросов:
- оба класса из одной предметной области;
- наследник отвечает принципу подстановки Барбары Лисков;
- код наследуемого класса необходим либо хорошо подходит для наследника;
- наследник в основном добавляет логику.
Чем больше положительных ответов, тем больше вероятность, что вы не промахнетесь с выбором наследования.
Конкретно в вашем случае я рискну предположить, что использование наследования излишне, и даже может стать бомбой замедленного действия при дальнейшем развитии системы. Здесь наследование выступает в роли выбора возможных алгоритмов действий пользователя в системе и введение новых ролей может оказаться очень дорогим, особенно если один пользователь должен будет обладать сразу несколькими ролями.
Надо или нет определяете вы проектируя архитектуру приложения. Примеры пишутся для объяснения сути, что наследование, это когда один объект - более конкретная разновидность другого.
Макс Васильев, почитайте общие книги по программированию и проектированию. Можете начать с Совершенный Код С. Макконнелл. Будет яснее когда, что, для чего и почему применять.
У вас может быть в классе User описано лишь поле Name и поле LastName.
А в конкретной реализации вы можете дописать для каждого конкретного юзера уже свои методы и дополнительные поля. Все от проекта зависит.