[RESOLVIDO] Como colocar um construtor na interface? [RESOLVIDO]

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]