[resolvido]

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";
            }

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
}

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

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

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() {}
}
1 curtida

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