[resolvido]

4 respostas Resolvido
Deyvison_Borges

Ola galera. tenho o livro Desbravando Java.
Mesmo com a didática perfeita do professor não consegui entender a delegação que eu fiz no construtor do livro.
---->página 73

public Livro(Autor autor)
            {
                this(); // delegando para outro construtor
                this.autor = autor;
                this.impresso = true;
            }
            
            public Livro()
            {
                this.isbn = "000-00-00000-00-0";
            }

4 Respostas

wldomiciano

Não ficou claro a parte que vc não entendeu, mas vou tentar dar um exemplo melhor do que o seu pra ver se fica mais claro o quão útil pode ser este recurso.

Considere um software de modelagem 3D em que um ponto é representado por um vetor de 3 posições.

class Vector {
  float x, y, z;

  Vector(float x, float y, float z) {
    this.x = x;
    this.y = y;
    this.z = z.
  }
}

Digamos que uma das funcionalidades deste software é mudar seu modo de edição para trabalhar apenas em 2D, assim, a terceira posição do vetor se tornaria inútil. Quando operando neste modo, poderíamos criar vetores usando um constructor especial pra ele:

Vector(float x, float y) {
  this(x, y, 0); // z é 0 já que não será util neste modo
}
Deyvison_Borges

Não pow.
Não entendi o motivo do
this();
fazer referência ao construtor

Livro(){
 this.isbn = "000000000";
}
wldomiciano
Solucao aceita

Quando vc usa this seguido por um par de parenteses dentro do corpo de algum constructor, ele entende que vc está chamando um outro constructor. Só isso mesmo. O motivo tem a ver com o design da linguagem talvez.

Apenas tenha isso em mente:

class Livro {
  private String autor;
  
  Livro(String autor) {
    this(); // este this (com parenteses) está invocando o constructor sem argumentos
    this.autor = autor; // este this (sem parenteses) está referenciando um atributo continudo na classe
  }

  Livro() {}
}
Deyvison_Borges

Nossa mano, entendi.
Muito obrigado, Deus abençoe.

Criado 30 de outubro de 2017
Ultima resposta 31 de out. de 2017
Respostas 4
Participantes 2