Construtor padrão em Java. - Java - Portugal-a-Programar
Construtor padrão em Java.
September 7, 2014 in Java
Caros, uma dúvida sobre a utilização de construtor. Ele é realmente necessário? Se tem o construtor padrão porque se cria um construtor diferente do padrão?
public Cliente(String nome, String telefone, String endereco)
public Cliente()	// este seria o padrão.
Edited September 7, 2014 by Hercles
Mostra um exemplo em como criavas um objecto usando cada uma dessas classes.
Cliente c1 = new Cliente ("Fulano", "Rua A", "9999");
Cliente c2 = new Cliente ("Beltrano", "Rua B", "8888");
Pedido p1 = new Pedido(1, c1, 500, new GregorianCalendar());
PedidoExpresso p2 = new PedidoExpresso(2, c2, 500, new
p2.setDataEntrega(new GregorianCalendar());
Nesse exemplo apenas usas um dos construtores, o que tem os parametros.
Ou seja, se a classe tivesse apenas o construtor padrao, sem parametros, não podias definir o objecto dessa forma
Terias de instanciar o objecto sem parametros e depois atribuir os parametros de outra forma.
Por essa razão, e para simplificar, uma classe permite construtores diferentes.
Pode se dizer que o Construtor Padrão teria que digitar valores para as variares no próprio construtor? No outro tipo não, o que facilitaria alguns "processos".
Outra razão adicional, é o facto de poderes forçar algumas pré-condições para utilizares apenas objectos que consideres válidos.
É uma forma de forçar contratos, embora existam outras técnicas mais usualmente utilizadas, como o "Builder Pattern"
Builder Pattern ?? vou pesquisa sobre...
É utilizado por exemplo no JavaFX http://blog.netopyr.com/2012/01/24/advantages-of-javafx-builders/
Também podem ser decentemente utilizados com o Guice para fazer injecção de dependências.
Mas no fundo, nem todos os objecto podem (ou devem) ser inicializados "peça a peça". Se queres um objecto num estado consistente logo no momento da inicialização, reforças a necessidade de inicialização colocando um construtor com os argumentos que irão receber os valores que permitem a inicialização do objecto. Isso faz com que o construtor padrão não seja criado (a não ser que o cries também).
Edited September 8, 2014 by KTachyon
O interessante que observei que ao criar um construtor se pode criar restrições...
class Transporte extends Embarcacao
double potencia;
double carga;
public Transporte(int capacidade, double velocMax, double comprimento,
double largura, double potencia, double carga)
super(capacidade, velocMax, comprimento, largura);
if (potencia < carga)	  // restrição
potencia = carga;
this.carga = carga;
Edited September 9, 2014 by Hercles
Caros, sei que é uma pergunta boba, mas é que não sei rsrs... Quanto criei ai embaixo a classe cliente, logo abaixo o contrutor "public Cliente(String nome, String telefone, String endereco)" estas variáveis: nome, telefone e endereço são as mesmas da classe cliente? ou são outras que vão ser atribuintas a estas? Eu poderia criar outro nome para as variáveis do construtor?