Problemas argumento padrao construtor

6 respostas
airtonarantes

Pessoal, quando estou definindo um construtor, eu posso colocar o construtor com argumentos padrão?
Por exemplo

public Rectangle(double l = 0, double w = 0)
    {
        setValues(l,w);
    }

Um construtor desse tipo não funciona pra mim, eu tive que fazer uma sobrecarga de construtores , eis a classe completa:

public class Rectangle {
    
    private double length;
    private double width;
    
    
    public Rectangle() // constructor without argument
    {    
      this(0,0); // chama o construtor sem paramentros
        
    }
      
    public Rectangle(double l, double w)
    {
        setValues(l,w);
    }

    public void setValues(double le,double wi)
    {
        setLength(le);
        setWidth(wi);
    }
    
    
    
///////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
   
    public double perimeter()
    {
        return getLength()*2 + getWidth()*2;
        
    }
    
    public double area()
    {
        return getLength() * getWidth();
        
    }

    public void setLength(double len)
    {
        length =(len<=0)?1:len;
    }
    
    public void setWidth(double wid)
    {
        width=(wid<=0)? 1:wid;
    }
    
    public double getLength()
    {
        return length;
    }
    
    public double getWidth()
    {
        return width;
    }
}

Eu fiz algo errado ou o java nao aceita um construtor com argumentos default e eu sempre tenho que fazer a sobrecarga?

[]'s

6 Respostas

B

Não só construtores, como também em métodos. Não existem argumentos-padrão em Java.

airtonarantes

Nossa, isso é horrível… e eu quebrando a cabeça aqui por causa do costume com Python e C++ :stuck_out_tongue:

sergiotaborda

Não. É excelente. Nada de gambiarra. Quer padrões, explicite-os.

T

O problema com os argumentos padrões é que é difícil compilá-los, já que acabam fazendo parte da interface. Para simplificar a linguagem, isso não foi incluído no Java, e como não fazem muita falta, as solicitações para que esse recurso fosse adicionado à linguagem foram rejeitadas.

http://bugs.sun.com/view_bug.do?bug_id=4940463
http://bugs.sun.com/view_bug.do?bug_id=6356761

peczenyj

Depende do ponto de vista :wink:

airtonarantes

Bem, pelo menos consegui fazer por que ja tinha lido sobre construtores, e eu pensando que tinha uma gambiarra:P.

Já que o Java é assim, então só basta aceitar :stuck_out_tongue:

vlw pessoal pela ajuda

Criado 9 de setembro de 2008
Ultima resposta 9 de set. de 2008
Respostas 6
Participantes 5