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

5 respostas
A

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.

5 Respostas

guijocargo

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 ‘-’

A

Sim, o que eu estou querendo fazer é obrigar a implementar um método, no caso um construtor.

Muito obrigado!

Att, André Vieira

T
Andr?de Souza Vieira:
guijocargo:
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

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.

abstract class X {
	protected X(String x) {
		
	}
}

class Y extends X {
	public Y(String y) {
		super(y);
	}
}

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.

rmendes08

Sim, o que eu estou querendo fazer é obrigar a implementar um método, no caso um construtor.

Muito obrigado!

Att, André Vieira

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.

A

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.
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()); 
		
	}

}
Criado 30 de setembro de 2012
Ultima resposta 30 de set. de 2012
Respostas 5
Participantes 4