Boa tarde,
Senhores tenho algumas duvidas sobre interfaces,
então vamos lá:
lendo o artigo do GUJ sobre Interfaces me deparei com uma série de questões…
tenho o conceito de abstração bem formulado em mente mas não consigo ver “O Grande Negócio” da Interface.
[quote]Qual é o problema aqui? O problema é que outras classes do sistema possuíam códigos como este:
public class Relatorios {
// ...
public void imprimeRelatorio(Pessoa p) {
// ...
}
// ...
}
[/quote]
Convenhamos este é um problema,
Segundo o artigo a solução para isso seria uma interface “Paciente”
permitindo assim códigos como:
Paciente a = new Animal();
Paciente p = new Pessoa();
após implementar esta interface voltando ao código anterior do artigo teriamos o seguinte:
public class Relatorios {
// ...
public void imprimeRelatorio(Paciente p) {
// ...
}
// ...
}
sendo assim teriamos que alterar todos os códigos do tipo “Pessoa” como:
Pessoa p = new Pessoa();
para:
Paciente p = new Pessoa();
Certo, até aqui vi vantagem da interface neste código,
no que diz respeito aos relatórios ou demais classes que trabalhem com o Objeto Paciente, tendo em vista que ainda terei que alterar o tipo do objeto instanciado quando códigos do tipo:
Paciente p = new Pessoa();
ocorrerem, para Animal();
correto ?
andei lendo bem sobre o assunto e vi que talvez por ser um assunto um tanto quanto confuso não é empregado de maneria correta por muitos desenvolvedores,
nestas idas e vindas da internet constatei o uso de interfaces para definir constantes como:
public static final int FUNCIONARIO_GERENTE = 0;
o que possibilita códigos como:
Funcionario f = new Funcionario();
f.setCargo(FUNCIONARIO_GERENTE);
}
enfim a utilização de interfaces para este fim é recomendada ?
pois posso ter uma interface para este fim de constantes e ela ser implementa em uma “classe 1” e a mesma é a super classe da “classe 2” e
acessaria estas constantes diretamente da “classe 2”
penso, não sei exatamente como se comporta a JVM em relação a isso,
a utilização de interfaces diretamente na super classe sobrecarrega o sistema ?
é uma pratica comum ?
Atenciosamente.