Método Construtor
Parte da seção Programação Orientada a Objetos do Journey de Java da Coddy — lição 7 de 87.
Um construtor é um método especial que é executado automaticamente quando você cria um objeto com new. Ele tem o mesmo nome da classe e nenhum tipo de retorno.
Construtor básico
public class Book {
private String title;
private String author;
public Book(String title, String author) {
this.title = title;
this.author = author;
}
}Construtor padrão (sem parâmetros)
public class Book {
private String title;
public Book() {
this.title = "Unknown";
}
}O construtor inicializa o estado do objeto
Book book = new Book("1984", "Orwell");
// O construtor é executado imediatamente, os campos são definidosSe você não escrever um construtor, o Java fornece um construtor padrão vazio. Uma vez que você escreva qualquer construtor, o padrão não é mais fornecido automaticamente.
Desafio
MédioCrie uma classe Book com um construtor que inicializa todos os campos:
- Campos privados:
title,author(String),pages(int) - Um construtor que recebe todos os três valores e os atribui usando
this - Métodos getter para cada campo
- Um método
getSummary()que retorna"<title> by <author> (<pages> pages)"
Folha de consulta
Um construtor é um método especial que é executado automaticamente quando você cria um objeto com new. Ele tem o mesmo nome da classe e nenhum tipo de retorno.
Construtor básico:
public class Book {
private String title;
private String author;
public Book(String title, String author) {
this.title = title;
this.author = author;
}
}Construtor padrão (sem parâmetros):
public class Book {
private String title;
public Book() {
this.title = "Unknown";
}
}Usando um construtor para criar um objeto:
Book book = new Book("1984", "Orwell");
// O construtor é executado imediatamente, os campos são definidosSe você não escrever um construtor, o Java fornece um padrão vazio. Assim que você escreve qualquer construtor, o padrão não é mais fornecido automaticamente.
Experimente você mesmo
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String title = scanner.nextLine();
String author = scanner.nextLine();
int pages = Integer.parseInt(scanner.nextLine());
Book book = new Book(title, author, pages);
System.out.println("Title: " + book.getTitle());
System.out.println("Author: " + book.getAuthor());
System.out.println("Pages: " + book.getPages());
System.out.println(book.getSummary());
}
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Programação Orientada a Objetos
1Fundamentos de POO
Arquivos ExternosIntrodução à POOClasses vs ObjetosA Palavra-chave thisMétodosCampos (Atributos)Método ConstrutorSobrecarga de ConstrutorRecapitulação - Calculadora Simples4Herança
Herança Básica (extends)A Palavra-chave superSobrescrita de Método (@Override)Encadeamento de ConstrutoresA Classe ObjectHerança Simples e MultinívelPor que não há Herança Múltipla de ClassesRecapitulação - Hierarquia de Funcionários7Métodos Especiais e a Classe Object
Método toString()equals() e hashCode()Método clone()compareTo() e ComparableInterface ComparatorRecapitulação - Ordenação Personalizada2Modificadores de Acesso e Encapsulamento
Visão Geral dos Níveis de AcessoMétodos Getter e SetterOcultação de InformaçõesA Palavra-chave finalRecapitulação - Gerenciador de Conta Bancária5Polimorfismo
Fundamentos de Sobrecarga de MétodosSobrescrita de Métodos (Tempo de Execução)Upcasting e DowncastingO Operador instanceofClasses e Métodos AbstratosRecapitulação - Calculadora de Formas8Conceitos Avançados de OOP
Composição vs HerançaAgregação vs ComposiçãoClasses Internas, Aninhadas e AnônimasEnums e Métodos de EnumRecords (Java 16+)Classes Seladas (Java 17+)11Padrões de Projeto Parte 1
Introdução aos Padrões de ProjetoPadrão SingletonPadrão FactoryPadrão BuilderPadrão ObserverPadrão Strategy3Propriedades de Classe e Membros Estáticos
Variáveis de Instância vs EstáticasMétodos EstáticosBlocos EstáticosConstantes (static final)Recapitulação - Contador e Utilitário6Interfaces e Classes Abstratas
Introdução às InterfacesImplementando InterfacesImplementação de Múltiplas InterfacesDefault e Static em InterfacesClasses Abstratas vs InterfacesInterfaces FuncionaisRecapitulação - Sistema de Pagamento9Generics
Introdução a GenericsClasses GenéricasMétodos GenéricosParâmetros de Tipos DelimitadosWildcards (?, extends, super)Recapitulação - Container Genérico12Padrões de Projeto Parte 2
Padrão CommandPadrão AdapterPadrão DecoratorPadrão Template MethodPadrão StatePadrão CompositePadrão Iterator