{
  "id": 4240369,
  "title": "POO: Scope / Visibility",
  "url": "https://urgent.news/2026/08/29/poo-scope-visibility",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-08-29T17:10:53.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/yuripeixinho/poo-scope-visibility-2c88"
  },
  "original_language": "pt",
  "account": "Caso não adicione nenhum modificador a um membro de classe, ele receberá acesso privado por padrão. Se nenhum modificador for especificado a uma classe de nível superior, ela será internal por padrão. A classe Veiculo, quando declarada sem nenhum modificador, será internal por padrão.\n\nExemplo de tabela de visibilidade de modificador:\n\nModificador | Acesso permitido\n-------------|------------------\nprivate | Apenas classe em si\nprotected | Classe e suas subclasses em qualquer assembly\ninternal | Qualquer código dentro do mesmo assembly (projeto/DLL)\nprotected internal | Subclasses ou mesmo assembly (união dos dois)\nprivate protected | Subclasses no mesmo assembly (interseção — C# 7.2+)\npublic | Qualquer lugar (C# 11+)\n\nAplicado à classe Veiculo:\n- O campo _senhaAlarme é private, acessível apenas por Veiculo e suas subclasses.\n- _quilometragem é protected, acessível por Veiculo e suas subclasses.\n- CodigoFrota é internal, acessível por qualquer classe do mesmo projeto.\n- VelocidadeAtual tem getter público (todo mundo pode lê-la) e setter privado (só Veiculo pode alterá-la).\n- Odometro tem getter protected internal (subclasses OU mesmo assembly podem ler) e setter apenas para subclasses.\n\nPrática recomendada: Campos devem ser private, expor métodos de leitura controlados; métodos internos devem ser private; partes do contrato público da classe devem ser public; use protected apenas quando houver necessidade de herança e a subclasse precisar de acesso direto.",
  "summary": "Introdução Se você não escrever nenhum modificador num membro de classe, ele vira private por padrão. E se você não escrever nenhum modificador numa classe de nível superior, ela vira internal por padrão. class Veiculo // sem \"public\" aqui, seria \"internal\" por padrão { double _combustivel ; // sem modificador = private implícito — CUIDADO, é fácil esquecer } Tabela completa de todos os níveis,…",
  "key_points": [
    "senhaAlarme is private, accessible only by Veiculo and its subclasses",
    "quilometragem is protected, accessible by Veiculo and its subclasses",
    "VelocidadeAtual has public getter, private setter accessible only by Veiculo"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}