Modificadores de acesso controlam a visibilidade dos membros da classe, aplicando encapsulamento restringindo quem pode lê-los ou chamá-los.
Modificadores de acesso controlam a visibilidade dos membros da classe, aplicando encapsulamento restringindo quem pode lê-los ou chamá-los.
| Modificador | Acessível de |
|---|
public | Em qualquer lugar |
protected | A classe e suas subclasses |
private | Apenas dentro da classe declaradora |
public class Employee {
private double salary; // internal — only Employee touches it
protected String department; // subclasses may use it
public String name; // open to all
public double getSalary() { // controlled, public read access
return salary;
}
}
salary é privado, então nenhum código externo pode corrompê-lo; o getter público é a única janela para dentro.
class Demo:
def __init__(self):
self.public = 1
self._protected = 2 # convention only ("don't touch")
self.__private = 3 # name-mangled to _Demo__private
Python não força private — depende de convenções de nomenclatura. Java/C# aplicam modificadores em tempo de compilação. Java também possui package-private (padrão, sem palavra-chave).
Tornar tudo public derrota o encapsulamento. Padrão para o nível mais restritivo e expanda apenas quando uma necessidade real aparecer.
Modificadores de acesso são a ferramenta concreta que transforma encapsulamento de um princípio em uma regra que o compilador impõe.
Uma pequena área pública significa que menos código pode depender de internals, para que você possa refatorar livremente sem quebrar chamadores.