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.