3.4 Entendendo a construção de um objeto
Agora que já conhecemos um pouco sobre objetos, podemos entender melhor como funciona seu processo de construção. Repare na sintaxe utilizada para criar um novo Livro:
Livro livro = new Livro();
Quando escrevemos a instrução Livro() seguida da palavra reservada new, estamos pedindo para a JVM procurar a classe Livro e invocar o seu construtor, que se parece com:
public Livro(){
}
Um construtor é bastante parecido com um método comum, mas ele não é um. Diferente dos métodos, um construtor tem o mesmo nome da classe e não tem um retorno declarado.
Mas, se nunca escrevemos esse construtor, quem o fez? Sempre que você não criar um construtor para suas classes,o compilador fará isso para você.
Quer uma prova? Vamos utilizar o programa javap que já vem no JDK para ver o código compilado. Acesse pelo terminal do seu sistema operacional a pasta bin de seu projetoe rodeo comando javap Livro. A saída deverá se parecer com:
Turini@ ~/Documents/workspace/livro-oo > javap Livro Compiled from “Livro.java”
public class Livro { java.lang.String nome; java.lang.String descricao; double valor; java.lang.String isbn; public Livro();void mostrarDetalhes();public void aplicaDescontoDe(double);}
Note que, mesmo sem criar o construtor vazio, ele está presente em nosso
código compilado:
public Livro();
E, sim, todo código que estiver declarado dentro do construtor será executado quando um objeto desse tipo for criado. Por exemplo, o código a seguir imprime uma mensagem sempre que criarmos um novo Livro:
public class Livro {String nome; String descricao; double valor; String isbn; Autor autor;
public Livro() {
System.out.println(“novo livro criado”);
}
// demais metodos da classe
}
Para testar, podemos criar alguns livros dentro de um método main e
executar esse código:
public static void main(String[] args) { Livro livro1 = new Livro();