Conceitos e Boas Práticas em Java
Pacotes
Pacotes em Java são usados para organizar classes em namespaces, facilitando o gerenciamento e a manutenção do código. O nome do pacote deve começar com letras minúsculas e seguir um padrão hierárquico que reflete o domínio ou a estrutura da aplicação.
Exemplo:
package com.exemplo.projetoexemplo;
Classes
Classes em Java representam entidades ou conceitos no mundo real. O nome de uma classe deve sempre começar com uma letra maiúscula e seguir o padrão CamelCase.
Exemplo:
public class CursoSuperior {
//Código ...
}Variáveis
Variáveis em Java armazenam dados que podem ser alterados durante a execução do programa. Nomes de variáveis devem começar com letras minúsculas e seguir o padrão CamelCase.
Exemplo:
int numero = 10;
String textoExemplo = "Exemplo de texto";Constantes
Constantes são valores fixos que não podem ser alterados após a sua definição. O nome de uma constante é normalmente escrito em letras maiúsculas, com palavras separadas por sublinhados.
Exemplo:
final double EXEMPLO_CONSTANTE_PI = 3.14159;
Métodos
Métodos realizam ações em uma classe ou interagem com outros objetos. O nome de um método deve começar com uma letra minúscula e seguir o padrão CamelCase.
Exemplo:
public int exemploMetodoSomar(int a, int b) {
return a + b;
}Modificadores de Acesso
Public
O modificador de acesso public torna o membro de uma classe (variável, método ou classe interna) acessível a partir de qualquer outro código em qualquer pacote. Qualquer classe pode acessar publicamente os membros de outra classe, independentemente de onde estejam localizadas.
Exemplo:
public class Pessoa {
public String nome;
}Private
O modificador de acesso private limita o acesso ao membro apenas à própria classe. Nem mesmo outras classes no mesmo pacote podem acessar membros privados. Este modificador é utilizado para proteger os dados sensíveis e garantir que eles só sejam manipulados dentro da própria classe.
Exemplo:
public class ContaBancaria {
private double saldo;
}Protected
O modificador de acesso protected permite que o membro de uma classe seja acessível dentro do mesmo pacote e por subclasses, mesmo que essas subclasses estejam em pacotes diferentes. É comumente usado em herança para permitir o acesso a membros de uma superclasse.
Exemplo:
public class Funcionario {
protected String cargo;
}Default
Quando nenhum modificador de acesso é especificado, o membro da classe é considerado como tendo acesso default (também conhecido como pacote privado). Isso significa que o membro só é acessível por outras classes no mesmo pacote. Este nível de acesso é útil para agrupar funcionalidades que pertencem a um mesmo contexto sem expô-las ao resto da aplicação.
Exemplo:
class Pedido {
double valorTotal;
}Encapsulamento e Ocultamento
Encapsulamento envolve ocultar os detalhes internos de uma classe e expor apenas o necessário através de métodos públicos GETTERS e SETTERS. Isso protege os dados de modificações indesejadas.
Exemplo:
public class ContaBancaria {
private double saldo;
public void depositar(double valor) {
saldo += valor;
}
public double setSaldo(Double valor) {
this.saldo = valor;
}
public double getSaldo() {
return saldo;
}
}Construtores e Destrutores
Construtores são métodos especiais usados para inicializar objetos. Java não possui destrutores como em C++, mas oferece o método
finalize()
, que é raramente utilizado devido ao coletor de lixo automático.Exemplo:
public class Pessoa {
private String nome;
public Pessoa(String nome) {
this.nome = nome;
}
@Override
protected void finalize() {
System.out.println("Objeto está sendo coletado.");
}
}Construtor Default
Em Java, se você não definir nenhum construtor em uma classe, o compilador automaticamente cria um construtor default (sem parâmetros). Construtores são utilizados para inicializar objetos.
Exemplo:
public class Exemplo {
// Construtor default criado automaticamente pelo compilador, mas pode ser representado por:
public Exemplo(){
}
}Sobrecarga de Métodos
Sobrecarga de métodos permite que você defina múltiplos métodos com o mesmo nome, mas com diferentes assinaturas (número e/ou tipo de parâmetros).
Exemplo:
public class Calculadora {
public int somar(int a, int b) {
return a + b;
}
public double somar(double a, double b) {
return a + b;
}
}