OO - Melhor maneira de modelar um Usuario

Gente seguinte estou aproveitando para tirar todas minhas dúvidas sobre modelagem e java e tudo mais.

No caso minha aplicação terá um Usuário.

Só que esse usuário pode ser de vários tipo:

Ex:

Usuário militar, usuário dependente do militar, usuário acompanhante do militar ou dependente, convidado funcionário, convidado, etc.

Cadas usuário desse tem as informações gerais e algumas poucos informações particulares do usuário.

como posso implementar meu modelo nesse caso? Teria um Usuário generico e outros usuário mais especializados para cada tipo? E quando esse usuário requisitar alguma coisas no Sistema? Como minha classe requisição irá tratar isso? Terá tipo um:

public class Requisicao() {

private Usuario usuario; // Isso aqui resolveria para minha requisição ter qualquer tipo de usuário?

}
..........

Estou meio perdido;

Eles mudam algum atributo? [Herança]

Se for tudo igua, coloca so um atributo tipo e ta resolvido.

Mudam sim. Tipo o Usuário do tipo Servidor Civil tem algumas informações que o funcionário militar não tem.