Bom dia Caros!
Gostaria de saber de vocês, se existe uma maneira de implementar um construtor na interface sem o identificador do tipo de retorno?
ou é somente getters e setters?
Muito obrigado!
Att,
André Vieira.
Bom dia Caros!
Gostaria de saber de vocês, se existe uma maneira de implementar um construtor na interface sem o identificador do tipo de retorno?
ou é somente getters e setters?
Muito obrigado!
Att,
André Vieira.
me corrijam se eu estiver errado, mas Interfaces voce implementa e nao instancia, interface nao tem metodo construtor, e metodos construtores nao tem tipo de retorno ‘-’
Sim, o que eu estou querendo fazer é obrigar a implementar um método, no caso um construtor.
Muito obrigado!
Att, André Vieira
Sim, o que eu estou querendo fazer é obrigar a implementar um método, no caso um construtor.
Muito obrigado!
Att, André Vieira[/quote]
Não tem como fazer isso.
O que você pode fazer é criar uma classe abstrata com um construtor com o modificar de acesso protected,
e no construtor das classes que estenderem essa classe abstrata, você faz uma chamada super.
[code]abstract class X {
protected X(String x) {
}
}
class Y extends X {
public Y(String y) {
super(y);
}
}[/code]
Ou sei lá, criar uma Interface “fabrica” que tenha um método com tipo de retorno igual a uma classe x.
interface IClasse {
public Class newInstance();
}
class Classe implements IClass {
public Classe newInstance() {
return new Classe();
}
}
Abraço.
Sim, o que eu estou querendo fazer é obrigar a implementar um método, no caso um construtor.
Muito obrigado!
Att, André Vieira[/quote]
O uso de interfaces é um dos recursos mais poderosos da linguagem Java. Elas permitem que você defina um tipo sem preocupar-se sobre como ele será implementado. Ou seja, interfaces servem para definir o contrato, um serviço, o foco é a comunicação entre objetos.
Por outro lado, os construtores são parte da implementação de uma classe. Eles servem unicamente para colocar o objeto em um estado conhecido antes de poder ser usado.
Sendo assim, qual seria o sentido de declarar construtores em interfaces ? Pois se você está exigindo que uma determinada classe satistfaça um determinado construtor, então você está impondo restrições à implementação, e não ao contrato de operação.
Enfim, você não pode forçar que uma determinada classe inclua um determinado contrutor, até mesmo porque o construtor deve ter o nome da classe.
Galera muito obrigado pela ajuda de vocês, sem acho que não teria conseguido.
Para aqueles que tiverem o mesmo questionamento que eu, apresento o código que é mais fácil de ser visualizado.
Isso que eu queria fazer, mas a tarde irie refinar esse código.
[code]
public class Profissao {
private float cargaHoraria;
private float salario;
public Profissao(float cargaHoraria, float salario) {
this.cargaHoraria = cargaHoraria;
this.salario = salario;
}
public float getCargaHoraria() {
return cargaHoraria;
}
public void setCargaHoraria(float cargaHoraria) {
this.cargaHoraria = cargaHoraria;
}
public float getSalario() {
return salario;
}
public void setSalario(float salario) {
this.salario = salario;
}
}
public class Professor extends Profissao {
private int matricula;
public Professor(float cargaHoraria, float salario, int matricula)
{
super(cargaHoraria, salario);
this.matricula = matricula;
}
public int getMatricula() {
return matricula;
}
public void setMatricula(int matricula) {
this.matricula = matricula;
}
}
public class Bolsista extends Profissao implements IBolsista {
private int ra;
public Bolsista(int ra, float cargaHoraria, float salario)
{
super(cargaHoraria, salario);
this.ra = ra;
}
public int getRa()
{
return ra;
}
public String imprimirDados()
{
return "O ra: "+ra+"| A cargaHoraria: "+getCargaHoraria()+"| O salario: "+getSalario()+"|." ;
}
}
public class Pesquisador extends Professor implements IBolsista{
private IBolsista iBolsista;
public Pesquisador(float cargaHoraria, float salario, int matricula, IBolsista iBolsista) {
super(cargaHoraria, salario, matricula);
// TODO Auto-generated constructor stub
this.iBolsista = iBolsista;
}
public int getRa()
{
return iBolsista.getRa();
}
public String imprimirDados()
{
return iBolsista.imprimirDados()+"A matrícula: "+getMatricula()+" |";
}
}
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
float cargaHoraria=100;
float salario=100;
int matricula=111;
int ra=111;
Bolsista objB = new Bolsista(ra,cargaHoraria,matricula);
Pesquisador objP = new Pesquisador(cargaHoraria,salario,matricula, objB);
System.out.println(objP.imprimirDados());
}
}[/code]