Até aqui, já criamos classes, métodos e herança.
Mas ainda existe um problema clássico:
como proteger dados internos de uma classe?
É exatamente isso que os campos privados resolvem.
🎯 Objetivo da aula
Ao final desta aula, você será capaz de:
- Entender o que são campos privados
- Usar o prefixo
# - Diferenciar campos públicos e privados
- Proteger o estado interno de uma classe
- Evitar acessos indevidos
O problema dos campos públicos
Até pouco tempo atrás, todo campo de uma classe era público:
class ContaBancaria { constructor(saldo) { this.saldo = saldo; } }
const conta = new ContaBancaria(1000);
conta.saldo = 0; // ❌ qualquer um pode alterar
Isso funciona, mas:
- quebra regras de negócio
- expõe dados sensíveis
- dificulta manutenção
O que são campos privados?
Campos privados são propriedades que:
- só podem ser acessadas dentro da classe
- não existem fora dela
- usam o prefixo
#
# faz parte do nome do campo. Criando um campo privado
class ContaBancaria { #saldo;
constructor(saldoInicial) {
this.#saldo = saldoInicial;
}
consultarSaldo()
{
return this.#saldo;
}
}
const conta = new ContaBancaria(1000);
console.log(conta.consultarSaldo()); // Saída será: 1000
Agora o campo #saldo está protegido.
Tentando acessar de fora
console.log(conta.#saldo); // ❌ Erro de sintaxe Isso não é um erro em tempo de execução — o código nem chega a rodar.
Campos privados + métodos públicos
O padrão correto é:
- campos privados guardam dados
- métodos públicos controlam o acesso
class ContaBancaria { #saldo;
constructor(saldoInicial) {
this.#saldo = saldoInicial;
}
depositar(valor) {
if (valor > 0) {
this.#saldo += valor;
}
}
sacar(valor) {
if (valor <= this.#saldo) {
this.#saldo -= valor;
}
}
consultarSaldo()
{
return this.#saldo;
}
}
const conta = new ContaBancaria(500);
conta.depositar(200);
conta.sacar(100);
console.log(conta.consultarSaldo()); // Saída será: 600
Por que isso é encapsulamento real?
Porque agora:
- ninguém altera o estado diretamente
- regras ficam centralizadas
- a classe controla seu próprio estado
Isso aproxima JavaScript de linguagens com encapsulamento clássico — mas sem perder flexibilidade.
Campos privados não aparecem no objeto
console.log(Object.keys(conta)); // Saída será: [] Campos privados:
- não são enumeráveis
- não aparecem em inspeções
- não podem ser acessados por reflexão comum
Comparação com convenções antigas
Antes do #, era comum ver:
class Conta { constructor() { this._saldo = 0; // ❌ só convenção } } Isso:
- não é privado de verdade
- pode ser acessado externamente
# são realmente privados. Quando usar campos privados?
- dados sensíveis
- estado interno
- regras de negócio
- proteção contra uso indevido
Quando não exagerar
Nem todo campo precisa ser privado.
- objetos simples
- DTOs
- dados de leitura
Resumo da aula para nunca mais esquecer
- Campos privados usam
# - Não podem ser acessados fora da classe
- Protegem o estado interno
- Garantem encapsulamento real
- Substituem convenções frágeis
Na próxima aula, vamos fechar esse bloco com Métodos Estáticos.
HARDWARE
Entendendo o seu computador
O que há dentro do meu computador?
Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.
Você Sabia?
Final Fantasy X
O jogo Final Fantasy X para o Sony Playstation 2 vendeu, apenas no dia do seu lançamento, 1.455.732 cópias, estabelecendo um recorde de vendagem para as primeiras 24 horas de um game. Méritos da SquareSoft, que desenvolveu um excelente produto!
Mouse
O mouse foi criado em 9 de dezembro de 1968, por um americano chamado Douglas Engelbart, que o batizou de "XY Position Indicator for a Display System". Conheça a história do mouse clicando aqui.
Space Invaders
A partida mais longa do clássico Space Invaders durou incríveis 38 horas e 32 minutos e esta façanha foi conseguida por um jogador de apenas 12 anos! O jogo, claro, podia ser pausado para alimentação e descanso, mas ainda assim o recorde, estabelecido no dia 02/09/1980, ainda não foi quebrado. Saiba mais.
Nintendo Entertainment System
O console Nintendo Entertainment System (NES), da Nintendo, detém o recorde de videogame mais clonado em todo o mundo. Já foram catalogados mais de 300 aparelhos diferentes capazes de reproduzir seus jogos! Saiba mais sobre ele aqui.
Música tema do Blanka
Até a primeira metade dos anos 90 era bastante comum que as trilhas sonoras dos games fossem criadas por mulheres e a responsável pelas músicas do clássico Street Fighter 2 foi Yoko Shimomura. Segundo ela, o ritmo "Tararirarin" da música tema do personagem Blanka, do Brasil, veio à sua cabeça enquanto ela estava no trem a caminho da Capcom.










