접근 제한자는 코드의 특정 부분에 대한 접근 권한을 제어하는 기능이다.
이를 통해 코드를 모듈화하고 다른 사용자가 코드를 사용할 때 예상치 못한 오류를 방지하는데 도움을 준다.
제한 수준
open
<public
<internal(Default)
<fileprivate
<private
public class Animal { // public 클래스는 모든 코드에서 접근 가능
open func makeSound() { // open 메서드는 같은 모듈 및 하위 모듈에서 접근 가능
print("...")
}
internal var name: String // internal 속성은 같은 모듈에서만 접근 가능
fileprivate func eat() { // fileprivate 메서드는 같은 파일에서만 접근 가능
print("...")
}
private let age: Int // private 상수는 같은 스코프에서만 접근 가능
}
class Dog: Animal { // Animal 클래스를 상속받는 Dog 클래스
override func makeSound() { // Animal 클래스의 open 메서드를 재정의
print("Woof!")
}
}
let dog = Dog() // Dog 클래스는 public이므로 모든 코드에서 접근 가능
dog.makeSound() // Dog 클래스의 public 메서드는 모든 코드에서 호출 가능
open class SomeOpenClass {}
public class SomePublicClass {}
internal class SomeInternalClass {}
fileprivate class SomeFilePrivateClass {}
private class SomePrivateClass {}