Construtor implicito e explicito

7 respostas
amoreiraedu

Bom dia! Estou recebendo o seguinte erro, ao instanciar uma classe:
Default constructor cannot handle exception type Exception thrown by implicit super constructor.
Must define an explicit constructor

Queria saber qual a diferença entre um construtor explícito e implícito?

7 Respostas

ajfilho

Posta teu código para podermos analisar melhor!

Abraços!

moacirjava

Construtor explícito é aquele que vc cria;
Construtor implícito é aquele que o compilador cria;

Se vc não criar um construtor o compilador certamente vai criar um pra vc.

Põe o código que tá dando pau ai.

robinsonbsilva

Jovem,

Saiba que toda classe sempre chama o construtor da Super Classe. Todas as classes em java extends da Object
e quando você fizer isso:

class Teste{ //aqui não aparece explicito, mas saiba que tem um extends Object

}
//no caso acima a jvm criará um construtor padrão 
class Teste{
   Teste(){
      super(); //aqui ele chama o construtor da super classe
   }

}

e para resumir caso sua classe não tenha um construtor padrão sem argumentos, na hora de chamar o super dará erro, pois não existe o correspondente.

class Teste{

   Teste(String teste){
      super(); //aqui dará erro, pois o construtor da super classe não tem um construtor que corresponda a esse
   }

}

Posta seu código aí!!

carlosBrossa

Construtor implicito é o construtor default, quando vc cria uma classe e nao cria um construtor o java usa o default.

Construtor explicito é quando vc o declara na sua classe criada.

Esse erro provavelmente é que a classe que voce esta herdando tem um contrutor declarado e nesse caso vc tem que criar um na classe filha.

Posta o codigo ae pra ficar mais facil…

amoreiraedu

Então! Valeu o auxílio ajfilho.
Estou tentando instanciar um DAO, que tem um throws SQLException no construtor, isso por que uso PrepareStatment.

public UsuarioDAO() throws Exception{
		//conexão compartilhada com a superclasse entidadeJuridicaDAO.
	}

Esta instanciação esta ocorrendo dentro de um código ZUL(ZKOSS), pois quando instancio num arquivo .java este problema não ocorre.
O problema é que se eu tirar o throws do construtor ele não funciona mais.

amoreiraedu

Pessoal, valeu a ajuda de vcs!!!
Mas eu resolvi aqui.

<zscript><![CDATA[//@IMPORT 
 import br.com.semente.model.Usuario;
 import java.util.ArrayList;
 import br.com.semente.dao.UsuarioDAO; 
]]></zscript>

<zscript><![CDATA[//@DECLARATION
 Usuario usuario = new Usuario(); 
]]></zscript>

<zscript><![CDATA[ 
 List carregaList = new UsuarioDAO().lista();
]]></zscript>

Apenas fiz a chamada ao método lista diretamente e cheguei no que eu queria, que era carregar um listBox do zkoss.

<listbox id="lstCarregaList" multiple="false" rows="1" height="200px" onSelect="onMove()">
		<listhead>
			<listheader label="Id" width="auto" />
			<listheader label="Nome" width="auto" />
		</listhead>
		
		<listitem forEach="${carregaList}" value="${each}"  >		
			<listcell label="${each.idEntidade}" />
			<listcell label="${each.nome}"/>
		</listitem>
			<zscript>
				<![CDATA[
			    void onMove(){
			       	if (((Usuario)lstCarregaList.getSelectedItem().getValue()).isAtivo()){
			       		rdAtivo.setSelectedIndex(0);
			       	}else{
			       		rdAtivo.setSelectedIndex(1);	
			       	}
			                      			
			       	if (((Usuario)lstCarregaList.getSelectedItem().getValue()).isRemoto()){
			       		rdRemoto.setSelectedIndex(0);
			       	}else{
			           	rdRemoto.setSelectedIndex(1);	
			        }			
		        }       
				]]>
			</zscript>	
	</listbox>

De qualquer forma agradeço novamente a ajuda de vcs!! Serviu para esclarecer dúvidas com relação a construtores.

K

Pelo o q eu conheço, se vc não declarar um construtor, a JVM automaticamente o cria (construtor defaul).
O construtors explícito é qndo vc o declara. Não sei ao certo, mas esse erro pode estar acontecendo,
pois vc está instanciando um construtor sem parâmetro qua não existe. Não sei se é esse o caso.

Espero ter ajudado.
Boa sorte !!

Criado 29 de janeiro de 2009
Ultima resposta 29 de jan. de 2009
Respostas 7
Participantes 6