Da trilha de Java Este conceito ainda não saiu como card do dia. ir para o card de hoje

Java POO Básico

Classes e objetos

Em Java, uma classe é um molde que descreve o que um tipo de objeto tem (atributos) e o que ele sabe fazer (métodos). Um objeto é uma instância concreta dessa classe, criada com new, que ocupa memória e guarda seus próprios valores.

Atributos são variáveis declaradas dentro da classe; métodos são blocos de código que operam sobre esses atributos. O construtor é um método especial, com o mesmo nome da classe e sem tipo de retorno, chamado automaticamente na criação do objeto para inicializá-lo.

A palavra-chave this referencia o próprio objeto dentro de um método ou construtor — útil para diferenciar atributos de parâmetros com o mesmo nome. Já static indica que o membro pertence à classe, não a cada objeto: existe uma única cópia compartilhada por todas as instâncias.

Dominar esses quatro pilares — atributos/métodos, construtores, this e static — é a base para entender encapsulamento, herança e polimorfismo mais adiante.

Pontos-chave

  • Uma classe é o molde; um objeto é uma instância criada com new.
  • O construtor tem o mesmo nome da classe, não tem tipo de retorno e inicializa o objeto.
  • this referencia o objeto atual e resolve conflitos entre atributo e parâmetro.
  • Membros static pertencem à classe e são compartilhados por todas as instâncias.
  • Métodos de instância acessam atributos; métodos static não acessam atributos de instância diretamente.
ContaBancaria.java
public class ContaBancaria {
    // Atributo de instância: cada conta tem o seu.
    private String titular;
    private double saldo;

    // Atributo static: compartilhado por todas as contas.
    private static int totalContas = 0;

    // Construtor: inicializa o objeto.
    public ContaBancaria(String titular, double saldoInicial) {
        this.titular = titular;      // 'this' diferencia do parâmetro
        this.saldo = saldoInicial;
        totalContas++;               // conta mais uma instância criada
    }

    // Método de instância: opera sobre os atributos do objeto.
    public void depositar(double valor) {
        if (valor > 0) {
            this.saldo += valor;
        }
    }

    public double getSaldo() {
        return saldo;
    }

    // Método static: pertence à classe, não a um objeto.
    public static int getTotalContas() {
        return totalContas;
    }

    public static void main(String[] args) {
        ContaBancaria a = new ContaBancaria("Ana", 100.0);
        ContaBancaria b = new ContaBancaria("Bruno", 50.0);
        a.depositar(25.0);

        System.out.println(a.titular + ": " + a.getSaldo());
        System.out.println(b.titular + ": " + b.getSaldo());
        System.out.println("Total de contas: " + ContaBancaria.getTotalContas());
    }
}

Exercícios

  1. 1
    Fácil

    Criando a classe Livro

    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.

    Resolver
  2. 2
    Médio

    Contador de instâncias com static

    Crie uma classe Produto com os atributos nome e preco, um construtor que os receba e um atributo static chamado quantidade que conta quantos objetos Produto foram criados. Adicione um método static int getQuantidade() que retorne esse total. No main, crie três produtos e imprima a quantidade.

    Resolver
  3. 3
    Desafio

    Turma com média e contador estático

    Crie uma classe Aluno com atributos nome e nota, um construtor e um método static double media(Aluno[] alunos) que retorne a média das notas do array. Adicione também um contador static de alunos criados. No main, crie um array com 4 alunos, imprima a média formatada com duas casas decimais e o total de alunos criados.

    Resolver

Continue estudando