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.
thisreferencia o objeto atual e resolve conflitos entre atributo e parâmetro.- Membros
staticpertencem à classe e são compartilhados por todas as instâncias. - Métodos de instância acessam atributos; métodos
staticnão acessam atributos de instância diretamente.
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());
}
}