Fácil Java
Criando a classe Livro
Enunciado
Crie uma classe Livro com os atributos titulo e autor (ambos String) e um construtor que receba esses dois valores. Adicione um método exibir() que imprima titulo + " por " + autor. No main, crie dois livros e chame exibir() em cada um.
Requisitos
- A classe
Livrodeve ter os atributostituloeautor. - O construtor deve receber os dois valores e usar
thispara atribuí-los. - O método
exibir()deve imprimir no formatotitulo por autor. - O
maindeve criar dois livros e chamarexibir()em ambos.
Código inicial
public class Livro {
// declare os atributos aqui
// escreva o construtor
// escreva o metodo exibir()
public static void main(String[] args) {
// crie dois livros e chame exibir()
}
}
Saída esperada
Dom Casmurro por Machado de Assis
O Hobbit por J. R. R. Tolkien
Ver dica
Use this.titulo = titulo; no construtor para diferenciar o atributo do parâmetro de mesmo nome.
Mostrar solução
public class Livro {
private String titulo; // atributo de instancia
private String autor; // atributo de instancia
// Construtor: recebe os valores e inicializa o objeto.
public Livro(String titulo, String autor) {
this.titulo = titulo; // 'this' aponta para o atributo do objeto
this.autor = autor;
}
// Metodo de instancia: usa os atributos do proprio objeto.
public void exibir() {
System.out.println(titulo + " por " + autor);
}
public static void main(String[] args) {
Livro l1 = new Livro("Dom Casmurro", "Machado de Assis");
Livro l2 = new Livro("O Hobbit", "J. R. R. Tolkien");
l1.exibir();
l2.exibir();
}
}
Passo a passo
- Declaramos os atributos
tituloeautorcomoprivate String, ou seja, cada objetoLivroterá seus próprios valores. - O construtor
Livro(String titulo, String autor)tem o mesmo nome da classe e nenhum tipo de retorno — é chamado automaticamente pelonew. - Dentro do construtor usamos
this.titulo = titulo;para deixar claro que o lado esquerdo é o atributo do objeto e o direito é o parâmetro recebido. - O método
exibir()acessatituloeautordiretamente, pois pertence à mesma classe. - No
main,new Livro(...)cria duas instâncias independentes e cada chamada deexibir()imprime os valores daquela instância.
Por que funciona
Cada objeto carrega sua própria cópia dos atributos de instância. O construtor garante que todo Livro nasce com valores válidos, e this resolve a ambiguidade entre atributo e parâmetro. Como exibir() é um método de instância, ele enxerga os atributos do objeto em que foi chamado.
Erros comuns
- Esquecer o
thisno construtor:titulo = titulo;apenas reatribui o parâmetro a ele mesmo; o atributo continuanull. - Declarar o construtor com tipo de retorno, por exemplo
public void Livro(...): isso vira um método comum e onewnão o usa. - Tentar chamar
exibir()sem instância, comoLivro.exibir();: gera erro de compilação porqueexibirnão éstatic.
Outra forma de resolver
Se os atributos fossem final (imutáveis), o mesmo construtor serviria; a diferença é que não poderiam ser alterados depois:
private final String titulo;
private final String autor;
Saída esperada
Dom Casmurro por Machado de Assis
O Hobbit por J. R. R. Tolkien