Boa tarde.
Tenho algumas classes POJOs no meu sistema com atributos em comum.
Posso criar uma Interface com esses atributos e depois implementá-los nas classes POJOs ?
Atenciosamente,
Fernando
Boa tarde.
Tenho algumas classes POJOs no meu sistema com atributos em comum.
Posso criar uma Interface com esses atributos e depois implementá-los nas classes POJOs ?
Atenciosamente,
Fernando
Se essas classes forem, por exemplo, algo parecido com o clássico: Pessoa, Pessoa Física e Pessoa Jurídica, acho melhor usar herança.
Agora para opinar de uma melhor forma, o ideal é que você explique seu cenário em detalhes.
Em interfaces você não declara atributos, somente constantes e operações (métodos).
Usar uma interface para declarar constantes e implementar essa interface apenas para acessar tais constantes é um anti-pattern chamado “constant interface anti-pattern”, ou seja, não se deveria fazer.
Seria interessante você dizer o que está tentando fazer com isso.
Se esses atributos em comum existem pois ambas classes conceitualmente tem similaridades, você pode usar a idéia sugerida pelo colega @Lucas_Camara.
Minha preocupaçao com herança (especialmente em java) é que é muito fácil fazer errado e no você só tem uma chance pra isso (nao há herança múltipla).
No exemplo de Pessoa Física e Jurídica, eu considero estranho, pois nao há realmente nada em comum entre eles (um tem CPF o outro CNPJ, um Nome o outro Nome Fantasia e Razao Social, etc).
Agora, imagine num caso em que suas classes tenha sempre os campos: QuemCriou e HorarioCriacao.
Você pode querer criar uma classe Auditavel, colocar esses atributos nela, e fazer suas outras classes herdar dela.
O problema com isso é que você limita todas suas classes Auditaveis a herdar dessa. Se quiser herdar de algo mais relevante depois, perdeu sua chance.
Uma soluçao muito usada nesse caso é ter um atributo do tipo Auditavel ao invés de herdar dela. E talvez chamar de Auditoria nesse caso, parece soar melhor. Isso é o que chamam de preferir composicao a herança. Desse jeito você nao cria nenhum comprometimento sério na sua hierarquia de classes.
Vc cria interface para usufruir de polimorfismo! Se vc precisa disso…faça, caso contrario, uma classe abstrata ja resolve. Se tiver interesse em aprender sobre:
https://for-j.myedools.com/jse-polimorfismo