Depois de entender que a classe é o molde e o objeto é a instância, o próximo passo é aprender a abrir um arquivo Java e reconhecer as peças. Algumas aparecem antes da classe, como package e import. Outras aparecem dentro dela, como atributos, construtores, métodos e modificadores de acesso.
package br.xt.app.departamento.produto;
import java.math.BigDecimal;
public class Produto {
private String nome;
private BigDecimal preco;
public Produto(String nome, BigDecimal preco) {
this.nome = nome;
this.preco = preco;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Esse arquivo mostra a estrutura básica que aparece em muitas classes: endereço no projeto, dependências, declaração da classe, estado interno, nascimento do objeto e comportamentos públicos.
O package informa o caminho lógico da classe dentro do projeto. Ele ajuda o Java a organizar nomes e separar áreas do sistema.
package br.xt.app.departamento.produto;
Na prática, quando você vê esse trecho, leia como: esta classe pertence ao pacote de produto dentro do módulo departamento.
O import indica classes que este arquivo usa, mas que foram declaradas em outro pacote.
import java.math.BigDecimal;
Aqui, a classe vai usar BigDecimal, um tipo comum para valores numéricos que precisam de mais cuidado, como preço.
A declaração da classe abre o molde:
public class Produto {
// corpo da classe
}
| Trecho | O que significa |
|---|---|
public | Outras partes do sistema podem acessar essa classe. |
class | Indica que estamos declarando uma classe. |
Produto | Nome da classe. Por convenção, começa com letra maiúscula. |
Atributos são os dados guardados dentro do objeto.
private String nome;
private BigDecimal preco;
O private protege o estado interno. Quem está fora da classe não mexe diretamente nesses campos; precisa passar pelos métodos que a classe oferece.
O construtor é chamado quando alguém usa new. Ele prepara o objeto no momento em que ele nasce.
public Produto(String nome, BigDecimal preco) {
this.nome = nome;
this.preco = preco;
}
O construtor tem o mesmo nome da classe e não declara tipo de retorno. O this aponta para o próprio objeto que está sendo criado.
Métodos representam ações ou consultas que o objeto sabe fazer.
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
| Trecho | Leitura prática |
|---|---|
public | O método pode ser chamado de fora da classe. |
String | O método devolve um texto. |
void | O método executa algo, mas não devolve valor. |
return nome | Devolve o valor do atributo nome. |
String nome | Parâmetro recebido pelo método. |
Modificadores de acesso definem quem consegue enxergar ou usar uma classe, atributo, construtor ou método.
| Modificador | Leitura simples | Uso comum |
|---|---|---|
public | Aberto para outras partes do sistema. | Classes principais, métodos de uso externo. |
private | Visível apenas dentro da própria classe. | Atributos e métodos internos. |
protected | Visível no pacote e para classes filhas. | Base de herança, quando uma filha precisa reaproveitar algo. |
| padrão | Sem palavra escrita; visível dentro do mesmo pacote. | Classes e métodos de uso interno do pacote. |
A pergunta prática é: quem precisa acessar isso? Se só a própria classe usa, private costuma fazer mais sentido. Se outras partes precisam chamar, aí o acesso pode ser public.
Quando você abrir uma classe como DepartamentoProdutoBean, DepartamentoHome ou DepartamentoManager, tente ler nessa ordem:
package?imports aparecem?public, private, protected ou sem modificador?Uma classe Java não é um bloco único para decorar. Ela tem peças. Primeiro vem a localização, depois as dependências, depois o molde em si, com estado, nascimento e comportamento.
Quando essa anatomia fica clara, os próximos assuntos, como encapsulamento, herança e polimorfismo, ficam bem mais fáceis de enxergar no código real.