Admin and Client "is a" user
While the implementation looks logically correct, some remarks about code style:


package name should include your organization, e.g. com.your.company.users, com.your.company.global
there is no need to prefix arguments with a, you can use the same name as the object fields, since through this, it can be determined which one is referred.


E.g:

public Client(String nick, ...) {
    this.nick = nick;
    // ...
}