Sitemap

Níveis de acesso na linguagem Swift

4 min readApr 16, 2025

Entendendo os Níveis de Acesso em Swift

Swift é uma linguagem de programação poderosa e versátil que foi lançada no fim de 2014 visando ser um substituto moderno ao Objective-C. Ela é utilizada para desenvolver aplicativos para iOS, macOS, watchOS, tvOS e demais dispositivos do ecossistema Apple. Um dos conceitos fundamentais em Swift é o controle de acesso, que define a visibilidade e acessibilidade de partes do código. Neste artigo, vamos explorar os diferentes níveis de acesso em Swift: private, fileprivate, internal, public e open, com exemplos práticos para cada um.

Private

O nível de acesso private talvez seja o mais comum entre as linguagens de programação. Ele restringe o uso de uma entidade (uma classe, por exemplo) ao seu próprio escopo de declaração. Isso significa que uma propriedade ou método marcado como private só pode ser acessado dentro da mesma classe ou estrutura onde foi declarado. Fora do escopo, nada pode ler ou modificar os seus dados diretamente.

Exemplo:

Funciona exatamente como em outras linguagens como Typescript, Java e afins. Nada de novo por aqui!

Fileprivate

O nível de acesso fileprivate permite que uma entidade seja acessada de qualquer parte do mesmo arquivo de origem. Isso é útil quando você deseja compartilhar código entre várias classes ou estruturas no mesmo arquivo. Basicamente, algo marcado como fileprivate se comporta como se fosse completamente público para dentro do arquivo em que ele está (independente se tem 10 classes dentro dele ou uma), e ao mesmo tempo, como privado para todo o resto da aplicação fora do arquivo.

Exemplo:

Interessante, não? O fileprivate não é novidade, mas, é raro de ver nas linguagens de programação mais populares.

Internal

O nível de acesso internal é o padrão “de fábrica” em tudo na linguagem Swift e permite que uma entidade seja acessada de qualquer parte do mesmo módulo. Um módulo é um conjunto de arquivos de origem que são compilados juntos, como um aplicativo ou uma biblioteca. Ele é algo como um package, se você vem do mundo Java ou adjacentes.

Exemplo:

Public

O nível de acesso public é outro famoso que normalmente é o padrão “de fábrica” como no Typescript, por exemplo. Ele permite que uma entidade seja acessada de qualquer parte de qualquer módulo que importe o módulo onde a entidade foi definida. No entanto, entidades public não podem ser sobrescritas ou herdadas fora do módulo.

Exemplo:

Nada de novo por aqui também se você já é uma pessoa habituada com programação. Public é amplamente utilizado e na maioria das vezes é até o padrão.

Open

O nível de acesso open é semelhante ao public, mas com uma diferença crucial: entidades open podem ser sobrescritas e herdadas fora do módulo onde foram definidas. Isso é especialmente útil para frameworks e bibliotecas que desejam permitir a extensão de suas classes. É uma forma de deixar acessível globalmente para que todo o código do módulo (pacote) esteja completamente disponível para um projeto consumir.

Exemplo:

Considerações finais

Apesar de ser um tema geralmente “básico” quando estamos estudando programação, achei interessante compartilhar os novos operadores que aprendi estudando Swift e dar um pouco da minha opinião sobre eles. Não necessariamente você precisará usar todos, como o Open, a não ser que você esteja criando uma biblioteca ou módulo novo que deva ser integralmente compartilhado. Mas, como minha mãe diz: “o saber não ocupa espaço e pode te ajudar muito no futuro”. Espero ter agregado ao seu conhecimento e despertado curiosidade para estudar Swift.

--

--

Leonardo Herdy Marinho
Leonardo Herdy Marinho

Written by Leonardo Herdy Marinho

I am a Master in computer science, senior software engineer (mobile focused), author, and curious.

No responses yet