Article image
Marcos Silva
Marcos Silva31/07/2025 21:05
Compartilhe

🛡️ Modificadores de acesso no Java (a.k.a. os "porteiros" da programação)

  • #Java
  • #C#
  • #Python
  • #JavaScript

Esses caras — public, private e protectedcontrolam quem pode acessar o quê dentro do seu código. Tipo segurança de balada VIP: só entra quem tá na lista.

🔓 publicPorta escancarada

Acesso total. Qualquer classe, de qualquer pacote, pode acessar.

Analogia: É tipo uma conta do Instagram aberta. Todo mundo vê o que você posta, até a sua ex, o RH da empresa, e aquele bot russo.

java
CopiarEditar
public class Cachorro {
  public String nome;
}

Você pode acessar nome de qualquer lugar do projeto.

🔒 privateModo ninja

Acesso restrito ao máximo. Só a própria classe consegue ver.

Analogia: É o diário com cadeado que você escondia debaixo da cama. Nem a JVM lê sem permissão.

java
CopiarEditar
public class Cachorro {
  private String segredoCanino;
}

Se tentar acessar segredoCanino de fora da classe Cachorro: erro na sua cara.

🛂 protectedMeio-termo controlado

Acesso para:

  • A mesma classe
  • As subclasses (herança)
  • As classes do mesmo pacote

Analogia: É tipo um grupo de WhatsApp da família — só entra quem é da família ou quem casou com alguém da família (herança 💍).

java
CopiarEditar
public class Animal {
  protected void emitirSom() {
      System.out.println("Som genérico");
  }
}

Subclasse Cachorro pode usar emitirSom(). Classe aleatória fora do pacote? Nem tenta.

⚪ (Sem nada) – Default (ou "package-private")

Se você não colocar nenhum modificador, o acesso é permitido somente dentro do mesmo pacote.

java
CopiarEditar
class Gato {
  void miar() {
      System.out.println("Miau");
  }
}

Essa classe e seu método só são visíveis no pacote onde estão.

📊 Comparativo rapidão

Modificador | Mesmo pacote | Subclasse (outro pacote) |Fora do pacote

public✅ | ✅ | ✅

protected✅ | ✅ | ❌

(default) ✅ | ❌ | ❌

private ❌ | ❌ | ❌

💡 Dica de ouro:

Use private o máximo possível. Quanto menos partes do seu código forem expostas, menos dor de cabeça no futuro. Segurança e manutenção agradecem. Faça seus atributos private e crie getters/setters se precisar dar acesso controlado.

Compartilhe
Comentários (2)
DIO Community
DIO Community - 04/08/2025 11:52

Excelente, Marcos! Que artigo super claro e didático sobre os modificadores de acesso no Java! É fascinante ver como você aborda o public, private e protected como "porteiros" que controlam quem pode acessar o quê no código, usando analogias criativas como conta de Instagram e grupo de WhatsApp da família.

Você demonstrou que public é de acesso total, private é restrito à própria classe, e protected permite acesso para a mesma classe e suas subclasses. Sua análise da visibilidade do default (sem modificador) e o comparativo rápido são muito úteis para qualquer desenvolvedor que busca escrever código seguro e bem estruturado.

Considerando que "quanto menos partes do seu código forem expostas, menos dor de cabeça no futuro", qual você diria que é o maior benefício para um desenvolvedor ao usar private o máximo possível e dar acesso controlado com getters e setters, em termos de segurança, manutenção e redução de bugs, em vez de deixar os atributos public?

Gilberto Ferrari
Gilberto Ferrari - 01/08/2025 08:24

Orimo. Bem explicado!