A criação de classes e objetos é um dos fundamentos da Programação Orientada a Objetos (POO) e a base para trabalhar com Java. As classes definem o comportamento e as características que os objetos terão, enquanto os objetos são instâncias dessas classes, representando entidades no mundo real com dados e comportamento.
Neste artigo/tutorial, vamos entender como criar classes e objetos em Java e como usar esses conceitos com exemplos práticos.
O que é uma Classe?
Uma classe em Java é como um molde ou um modelo que define as propriedades (atributos) e comportamentos (métodos) que os objetos criados a partir dessa classe terão. Ela pode conter variáveis e métodos que descrevem as ações que os objetos podem executar.
Sintaxe básica de uma classe em Java:
class NomeDaClasse {
// Variáveis de instância (atributos)
tipoVariavel nomeVariavel;
// Métodos (comportamentos)
tipoRetorno nomeMetodo() {
// Código do método
}
}
O que é um Objeto?
Um objeto é uma instância de uma classe. Quando criamos um objeto, estamos criando uma entidade específica que possui as características definidas pela classe. Em Java, usamos o operador new
para instanciar objetos.
Exemplo básico de classe e objeto
Vamos criar uma classe chamada Carro
, que terá dois atributos: modelo
e ano
, e um método exibirDetalhes
para mostrar as informações do carro.
class Carro {
// Atributos da classe Carro
String modelo;
int ano;
// Método para exibir os detalhes do carro
void exibirDetalhes() {
System.out.println("Modelo: " + modelo);
System.out.println("Ano: " + ano);
}
}
Agora que temos nossa classe Carro
, vamos criar um objeto dessa classe e utilizá-lo:
public class Main {
public static void main(String[] args) {
// Criando um objeto da classe Carro
Carro meuCarro = new Carro();
// Atribuindo valores aos atributos
meuCarro.modelo = "Fusca";
meuCarro.ano = 1975;
// Chamando o método para exibir os detalhes do carro
meuCarro.exibirDetalhes();
}
}
Saída:
Modelo: Fusca
Ano: 1975
Construtores em Java
Um construtor é um método especial que é chamado quando um objeto é criado. Ele pode ser usado para inicializar os atributos do objeto de maneira conveniente. O construtor tem o mesmo nome da classe e não tem um tipo de retorno.
Exemplo de classe com construtor
class Carro {
String modelo;
int ano;
// Construtor
Carro(String modelo, int ano) {
this.modelo = modelo;
this.ano = ano;
}
// Método para exibir os detalhes do carro
void exibirDetalhes() {
System.out.println("Modelo: " + modelo);
System.out.println("Ano: " + ano);
}
}
Neste caso, podemos criar objetos de Carro
passando os valores diretamente para o construtor:
public class Main {
public static void main(String[] args) {
// Criando objetos usando o construtor
Carro meuCarro = new Carro("Fusca", 1975);
Carro outroCarro = new Carro("Civic", 2020);
// Exibindo os detalhes dos carros
meuCarro.exibirDetalhes();
outroCarro.exibirDetalhes();
}
}
Saída:
Modelo: Fusca
Ano: 1975
Modelo: Civic
Ano: 2020
Trabalhando com Múltiplos Objetos
Podemos criar vários objetos a partir da mesma classe. Cada objeto terá seus próprios valores para os atributos, e esses valores podem ser diferentes de objeto para objeto.
public class Main {
public static void main(String[] args) {
// Criando vários objetos de Carro
Carro carro1 = new Carro("Fusca", 1975);
Carro carro2 = new Carro("Corolla", 2019);
Carro carro3 = new Carro("Civic", 2020);
// Exibindo detalhes dos carros
carro1.exibirDetalhes();
carro2.exibirDetalhes();
carro3.exibirDetalhes();
}
}
Saída:
Modelo: Fusca
Ano: 1975
Modelo: Corolla
Ano: 2019
Modelo: Civic
Ano: 2020
Encapsulamento e Acesso aos Atributos
Para proteger os dados, o conceito de encapsulamento é muito importante. Isso significa que os atributos da classe devem ser privados, e o acesso a eles deve ser feito por meio de métodos públicos chamados getters e setters.
Exemplo com encapsulamento:
class Carro {
// Atributos privados
private String modelo;
private int ano;
// Construtor
Carro(String modelo, int ano) {
this.modelo = modelo;
this.ano = ano;
}
// Métodos getter e setter para acessar os atributos
public String getModelo() {
return modelo;
}
public void setModelo(String modelo) {
this.modelo = modelo;
}
public int getAno() {
return ano;
}
public void setAno(int ano) {
this.ano = ano;
}
public void exibirDetalhes() {
System.out.println("Modelo: " + modelo);
System.out.println("Ano: " + ano);
}
}
Aqui, o acesso aos atributos modelo
e ano
é controlado pelos métodos get
e set
, permitindo uma manipulação segura dos dados:
public class Main {
public static void main(String[] args) {
// Criando objeto com construtor
Carro carro = new Carro("Fusca", 1975);
// Modificando o valor do atributo usando o setter
carro.setModelo("Corolla");
carro.setAno(2021);
// Exibindo detalhes atualizados
carro.exibirDetalhes();
}
}
Saída:
Modelo: Corolla
Ano: 2021
Conclusão
Neste artigo/tutorial, você aprendeu o básico sobre classes e objetos em Java. Vimos como criar classes, como instanciar objetos, como usar construtores e como aplicar o encapsulamento para proteger os dados dos objetos. Esses são conceitos essenciais que formam a base da Programação Orientada a Objetos em Java e são fundamentais para a criação de programas bem estruturados e fáceis de manter.
Para continuar desenvolvendo suas habilidades, pratique criando suas próprias classes, trabalhando com objetos e explorando mais sobre POO em Java.