według mnie najlepiej zastosować wzorzec fabrykę poza tym zastosować strukturę tak±
abstract class Person{}
class User extends Person{}
class Admin extends Person{}
I użycie wyj±tka w twoim kodzie jest niewła¶ciwie...inaczej mówi±c nadmiarowe, przy tak błachym błędzie stosuj klasyczne if-else
Poza tym lepiej od razu w zapytaniu sql sprawdzić hasło i login(ustaw go na unique, bo co się staie, gdy będzie dwóch użytkoników o takich samych loginach i hasłach?, chyba, że przy zakładaniu konta już tego pilnujesz), poza tym w konstruktorze używasz switcha, kontruktor raczej używa się do inicjalizacji zmiennych, metod, obiektów naprzykład przy kompozycji, a nie używasz wła¶ciwie jako metody klasycznej
to takie moje uwagi, poprostu chce ci pomóc a nie krytykować, sam często tu się radzę i dobrych rad słucham