Controle de acesso (public/internal/fileprivate/private)
Controle a visibilidade das APIs entre arquivos e módulos usando public, internal (padrão), fileprivate e private. Aprenda quando expor e quando ocultar.
Controle de acesso (public/internal/fileprivate/private) é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 3 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 3 aulas no total.
Visão geral dos níveis de acesso
Níveis de acesso do Swift:
- público: visível para outros módulos
- interno (padrão): visível no mesmo módulo
- privado no arquivo: somente neste arquivo de origem
- privado: escopo delimitador (tipo/extensão)
interno (padrão)
Omitir um modificador torna as declarações internas, utilizáveis em qualquer lugar dentro do mesmo módulo (pacote ou destino do aplicativo).
struct Greeter { // internal by default
func hello(_ name: String) -> String { "Hello, \\(name)" }
}
let g = Greeter()
print(g.hello("Ada"))Superfície da API pública
Marque as APIs como públicas para expô-las a outros módulos; mantenha os auxiliares internos para manter a superfície pequena.
public struct Math {
public static func add(_ a: Int, _ b: Int) -> Int { a + b }
// internal helper remains hidden outside the module
static func double(_ x: Int) -> Int { x * 2 }
}
print(Math.add(1,2))Escopo privado no arquivo
Privado no arquivo restringe o uso ao mesmo arquivo de origem. É ótimo para separar auxiliares de um tipo dentro de um único arquivo.
// In FileA.swift
fileprivate func hiddenInFile() { print("Only in this file") }
struct A {
func call() { hiddenInFile() } // OK: same file
}
A().call()Escopo privado
Privado limita o acesso ao escopo delimitador (tipo/extensão). Use-o para proteger invariantes de forma rigorosa.
struct Box {
private var value = 0 // visible only inside Box declaration
mutating func set(_ v: Int) { value = v } // controlled write
func get() -> Int { value } // controlled read
}
var b = Box()
b.set(7)
print(b.get())
// b.value = 3 // error: 'value' is privateDicas de projeto
Dicas de projeto:
- Use interno por padrão e exponha como público apenas o que os consumidores precisam.
- Prefira privado/privado no arquivo para os auxiliares, mantendo as APIs pequenas.
- O nível de acesso de um membro não pode ser mais amplo que o de seu tipo.
Acesso padrão
Verificação rápida: qual é o nível de acesso padrão?
Recapitulação
Recapitulação: use público para expor módulos, mantenha a maioria das coisas internas e oculte detalhes com privado no arquivo/privado para proteger invariantes.
Perguntas Frequentes
A aula “Controle de acesso (public/internal/fileprivate/private)” é grátis?
Sim — o texto completo de “Controle de acesso (public/internal/fileprivate/private)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 3 aulas no total.
O que vou aprender em “Controle de acesso (public/internal/fileprivate/private)”?
Controle a visibilidade das APIs entre arquivos e módulos usando public, internal (padrão), fileprivate e private. Aprenda quando expor e quando ocultar. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Swift Academy?
Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 3.
Quanto tempo leva a aula “Controle de acesso (public/internal/fileprivate/private)”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Swift Academy?
Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Inicializador memberwise e métodos mutating
- Herança, substituição e final
- Controle de acesso (public/internal/fileprivate/private)