Sua classe DoubleHelper só tem 1 construtor e ele recebe um double como parametro, ao chamar o new DoubleHelper() você não está passando esse double…
DoubleHelperhelper=newDoubleHelper(10.0);
Não se esqueça que construtores não são herdados e que um construtor padrão sem parametros só é criado automaticamente se sua classe não tiver nenhum…
E
elomarnsPJ
No código abaixo você faz uma chamada ao construtor da classe DoubleHelper e não passa nenhum argumento, sendo que o construtor padrão sem argumentos só é incluído automaticamente em classes que não possuem nenhum construtor declarado. Logo, como você declarou um construtor, o construtor padrão não foi incluído automaticamente pelo compilado. Ou seja, você faz uma chamada a um construtor inexistente.
DoubleHelperhelper=newDoubleHelper();
P
Paula_CPSPJ
Mesmo passando um valor double continua dando o mesmo erro…
J
jaireltonPJ
Se você estiver usando um JDK anterior ao 5.0 passe um objeto Double.
E quando eu fazia o teste não dava nenhum erro de construtor is undefined
Por que??
J
jaireltonPJ
Porque toda classe precisa ter um construtor, sempre, e nesse caso sua classe não tem nenhum, então o compilador adiciona um construtor padrão a ela, que é assim:
public DoubleHelper(){
}
E esse construtor não recebe qualquer parametro. Quando você adiciona um outro construtor o compilador não coloca mais o padrão.
E
elomarnsPJ
"jairelton":
Porque toda classe precisa ter um construtor, sempre, e nesse caso sua classe não tem nenhum, então o compilador adiciona um construtor padrão a ela, que é assim:
public DoubleHelper(){
}
E esse construtor não recebe qualquer parametro. Quando você adiciona um outro construtor o compilador não coloca mais o padrão.
Uma dúvida: o construtor padrão inicia as variáveis de instância com seus valores padrão, logo o resultado que ele produz, no caso da classe DoubleHelper, é o mesmo resultado que o construtor abaixo:
public DoubleHelper()
{
value = null;
}
Logo, eu fiquei na dúvida se o construtor incluído pelo compilador é parecido com o que eu declarei acima ou se ele é como o que você declarou no post acima. Caso ele seja como você falou, como é feita a inicialização das variáveis de instância, já que não há nenhum instrução no construtor?
J
jaireltonPJ
Variaveis de instancia são inicializadas automaticamente, não depende do construtor.
para ser mais preciso o construtor padrão pareceria com isso:
public DoubleHelper(){
super();
}
Pois deve haver uma instrução super() ou this() na primeira linha de qualquer construtor, sempre.
E
elomarnsPJ
Entendi agora. Valeu por mais este esclarecimento.