1. O que são classe e objeto
Vamos começar com uma analogia. Imagine o projeto de um carro. No desenho consta que o carro tem quatro rodas, motor, cor, bancos etc. Mas o desenho, por si só, não anda nas ruas, não faz barulho de motor e não consome gasolina. É apenas uma descrição de como o carro é.
Classe em programação é um “molde” (ou modelo) que define quais dados (campos) e ações (métodos) terão suas instâncias.
Objeto é o “carro real” montado a partir desse molde, ou seja, um exemplar concreto. Cada objeto tem seu próprio estado (por exemplo, um carro pode ser vermelho e outro azul) e comportamento: cada objeto pode executar ações definidas na classe (por exemplo, dirigir, frear, buzinar).
Exemplos do dia a dia
- Classe: Person — descrição de que uma pessoa tem nome, idade, altura e pode falar ou correr.
- Objetos: Vasya, Petya, Katya — pessoas concretas, cada uma com seu próprio nome e idade.
| Classe | Objeto 1 | Objeto 2 |
|---|---|---|
|
|
|
Por que as classes são importantes?
- Agrupar variáveis e métodos relacionados.
- Criar quantos objetos forem necessários com a mesma estrutura, mas dados diferentes.
- Descrever facilmente entidades complexas: por exemplo, “Conta bancária”, “Produto”, “Livro”, “Usuário”.
2. Sintaxe de declaração de classe
Em Java, uma classe é declarada com a palavra‑chave class. Em seguida vem o nome da classe (por convenção, com inicial maiúscula) e, depois, chaves, dentro das quais ficam campos e métodos.
Exemplo mais simples
public class Person {
// Aqui ficarão os campos e os métodos
}
Explicação:
- public — modificador de acesso.
- class — diz ao compilador: “estou declarando uma classe”.
- Person — nome da classe (você escolhe, mas com inicial maiúscula).
Regras importantes de nomenclatura de classes
- O nome da classe deve começar com letra maiúscula (por exemplo, Car, Account, Book).
- O nome da classe não pode conter espaços nem caracteres especiais, exceto sublinhado e $ (este último é raro).
- Se o nome tiver várias palavras, use o estilo CamelCase: BankAccount, BookStore.
Onde escrever as classes?
Uma classe pode ser declarada em um arquivo separado (o mais comum: um arquivo — uma classe) ou dentro de outra classe (falaremos de classes aninhadas mais adiante).
Por exemplo, o arquivo Person.java:
public class Person {
// campos e métodos
}
3. Campos e métodos da classe (resumo)
Até agora apenas declaramos a classe, mas ela está vazia — como uma caixa sem conteúdo. Vamos adicionar “propriedades” (campos) e “ações” (métodos).
Campos (variáveis dentro da classe)
Os campos descrevem quais dados cada objeto dessa classe terá.
public class Person {
String name; // nome da pessoa
int age; // idade
}
Métodos (funções dentro da classe)
Os métodos descrevem o que o objeto sabe fazer.
public class Person {
String name;
int age;
void sayHello() {
System.out.println("Olá, meu nome é " + name + "!");
}
}
Explicação:
- void — o método não retorna nada (falaremos de valores de retorno depois).
- sayHello() — nome do método; os parênteses são obrigatórios.
- Dentro do método, é possível acessar os campos da classe (por exemplo, name).
4. Criação de um objeto
E agora — magia! Como transformar o molde em um “carro real”? Para isso, usa‑se a palavra‑chave new.
Sintaxe de criação de objeto
Person vasya = new Person();
- Person — tipo da variável (nossa classe).
- vasya — nome da variável (você pode escolher qualquer um).
- new Person() — criação de um novo objeto do tipo Person.
Agora temos a variável vasya, que referencia um objeto da classe Person. Esse objeto tem seus próprios campos e métodos.
Acesso a campos e métodos
Acessamos campos e métodos usando o ponto:
vasya.name = "Vasya";
vasya.age = 25;
vasya.sayHello(); // Vai imprimir: Olá, meu nome é Vasya!
É possível criar quantos objetos você quiser
Person petya = new Person();
petya.name = "Petya";
petya.age = 30;
petya.sayHello(); // Olá, meu nome é Petya!
Cada objeto é uma “cópia” independente com seus próprios dados.
5. Conexão com os tópicos anteriores
Até a aula de hoje, declaramos todas as variáveis e métodos diretamente dentro da classe com o método main e não pensávamos em criar tipos próprios. Agora podemos criar nossos próprios “contêineres” de dados e funções.
Isso abre enormes possibilidades! Agora você pode descrever quaisquer entidades que apareçam no seu problema: clientes, produtos, contas, pedidos, animais, carros — tudo o que você imaginar. Os programas se tornam mais estruturados, legíveis e escaláveis.
Exemplo: nossa primeira classe própria
Vamos escrever uma classe simples para nosso mini‑programa — digamos, “ContaBancaria” (BankAccount). Vamos evoluir esse exemplo ao longo do curso.
public class BankAccount {
String owner; // titular da conta
int balance; // saldo da conta
void printInfo() {
System.out.println("Titular: " + owner + ", saldo: " + balance + " euros.");
}
}
Agora, no método principal main (que ainda é necessário para iniciar o programa), podemos criar objetos dessa classe:
public class Main {
public static void main(String[] args) {
BankAccount account1 = new BankAccount();
account1.owner = "Ivan";
account1.balance = 1000;
account1.printInfo(); // Titular: Ivan, saldo: 1000 euros.
BankAccount account2 = new BankAccount();
account2.owner = "Maria";
account2.balance = 2000;
account2.printInfo(); // Titular: Maria, saldo: 2000 euros.
}
}
Atenção: cada objeto tem seus próprios valores de campos. Se você alterar o saldo de account1, isso não afetará account2.
Esquema visual: classe e objetos
graph TD
subgraph Class
Person["Class Person | name:String | age:int | sayHello()"]
end
subgraph Objects
vasya["vasya : Person | name = 'Vasya' | age = 20"]
petya["petya : Person | name = 'Petya' | age = 25"]
end
vasya --> Person
petya --> Person
Explicação:
- Person — é a classe (molde).
- vasya e petya — são objetos (instâncias) criados a partir desse molde.
6. Erros comuns ao declarar classes e criar objetos
Erro № 1: Nome da classe em minúscula.
Em Java é convenção (o compilador não reclama, mas todos os programadores experientes — sim!) nomear classes com inicial maiúscula. Não escreva class person — escreva class Person.
Erro № 2: Falta de chaves.
Não se esqueça de que o corpo da classe deve sempre estar entre chaves.
public class Person // erro!
String name;
Correto:
public class Person {
String name;
}
Erro № 3: Tentar acessar campos e métodos da classe sem criar um objeto.
Se um método ou campo não for declarado como static, só é possível acessá‑lo por meio de um objeto:
Person.sayHello(); // erro!
Correto:
Person vasya = new Person();
vasya.sayHello();
Erro № 4: Nome do arquivo diferente do nome da classe (para uma classe public).
Se a classe for declarada como public, o nome do arquivo deve coincidir com o nome da classe:
// Arquivo Person.java
public class Person { ... }
Se o arquivo tiver outro nome, o compilador emitirá um erro.
Erro № 5: Usar variáveis da classe sem inicializar um objeto.
Os campos da classe (não static) pertencem ao objeto, não à própria classe.
GO TO FULL VERSION