Molde e Instância em Java

0:00 / 0:00

Antes de entrar nos pilares da POO, vale firmar a peça mais usada no Java: a diferença entre classe e objeto. A classe é o molde; o objeto é uma coisa real criada a partir desse molde.

Ideia central

Uma classe descreve quais dados e comportamentos alguma coisa terá. Um objeto é uma instância concreta dessa classe, com valores próprios.

Pense em Produto: a classe diz que todo produto tem nome, preço e pode calcular desconto. Um objeto específico pode ser o produto "Teclado", com preço 120. Outro objeto pode ser "Monitor", com preço 900. Os dois seguem o mesmo molde, mas carregam estados diferentes.

Classe — o molde

A classe junta atributos e métodos em uma unidade com nome. Em Java, quase tudo que você escreve fica dentro de alguma classe.

public class Produto {
    String nome;
    double preco;

    double precoComDesconto(double percentual) {
        return preco - (preco * percentual / 100);
    }
}

Objeto — a instância

Objeto é aquilo que nasce quando o programa usa uma classe para criar algo em memória. Em Java, isso normalmente aparece com new.

Produto teclado = new Produto();
teclado.nome = "Teclado";
teclado.preco = 120.00;

A variável teclado aponta para um objeto do tipo Produto. Esse objeto tem seu próprio nome e seu próprio preco.

Atributos e métodos

PartePergunta que respondeExemplo
AtributoQue informação esse objeto guarda?nome, preco, ativo
MétodoO que esse objeto sabe fazer?salvar(), validar(), calcularTotal()

Essa separação ajuda a ler código: quando você vê campo, pense em estado; quando vê método, pense em ação.

Tipo e variável

Na linha Produto teclado = new Produto();, aparecem duas ideias juntas:

A variável não é o objeto em si. Ela é uma referência para encontrar aquele objeto na memória.

Vários objetos da mesma classe

Uma mesma classe pode gerar muitos objetos. Cada objeto guarda seu próprio estado, mesmo compartilhando o mesmo desenho.

Produto teclado = new Produto();
teclado.nome = "Teclado";
teclado.preco = 120.00;

Produto monitor = new Produto();
monitor.nome = "Monitor";
monitor.preco = 900.00;

teclado e monitor são dois objetos diferentes. Mudar o preço do teclado não muda o preço do monitor.

Construtor — nascimento do objeto

O construtor é chamado quando o objeto é criado. Ele serve para começar o objeto em um estado válido.

public class Produto {
    String nome;
    double preco;

    public Produto(String nome, double preco) {
        this.nome = nome;
        this.preco = preco;
    }
}

Com isso, dá para criar o objeto já preenchido:

Produto teclado = new Produto("Teclado", 120.00);

O this significa "este objeto aqui". Ele diferencia o atributo do objeto do parâmetro recebido pelo construtor.

Como isso aparece no projeto

Nos arquivos do projeto, esse fundamento aparece o tempo todo:

Lição geral

Quando estiver lendo Java, faça três perguntas simples: qual é a classe?, quais objetos existem? e que estado e comportamento eles carregam?

Com isso claro, os próximos fundamentos — encapsulamento, herança, polimorfismo e abstração — deixam de parecer nomes soltos e passam a encaixar em uma base concreta.