Swift에서 접근 제한자는 클래스,구조체,열거형 및 이들의 멤버에 대한 접근을 제어하는 데 사용됩니다.
Swift의 접근 제한자는 다음과 같다.
Open
설명: 모듈 내외부 어디서든 접근 및 서브클래싱, 오버라이딩 가능. 주로 프레임워크와 라이브러리의 공용 API를 만들 때 사용.
예제:
open class OpenClass {
open func openMethod() {
print("This method can be overridden.")
}
}
Public
설명: 모듈 외부에서도 접근 가능하지만, 서브클래싱 및 오버라이딩은 불가능. 주로 모듈의 공용 API를 정의할 떄 사용.
예제:
public class PublicClass {
public var publicProperty: Int = 0
public func publicMethod() {
print("This method can be called but not overridden.")
}
}
Internal
설명: 기본 접근 수준. 동일 모듈 내에서 접근 가능. 다른 모듈에서는 접근 불가능.
예제:
class InternalClass {
var internalProperty: Int = 0
func internalMethod() {
print("This method is internal.")
}
}
Fileprivate
설명: 동일 파일 내에서만 접근 가능.
예제:
class FileprivateClass {
fileprivate var fileprivateProperty: Int = 0
fileprivate func fileprivateMethod() {
print("This method is fileprivate.")
}
}
Private
설명: 동일 선언 내부에서만 접근 가능. 클래스 또는 구조체 내부에서만 접근 가능하며, 같은 파일 내다른 클래스나 구조체에서도 접근 불가능.
예제:
class PrivateClass {
private var privateProperty: Int = 0
private func privateMethod() {
print("This method is private.")
}
}
접근 제한자의 사용 예시
open class OpenClass {
open func openMethod() {
print("Open method")
}
}
public class PublicClass {
public var publicProperty = 0
public func publicMethod() {
print("Public method")
}
}
class InternalClass {
var internalProperty = 0
func internalMethod() {
print("Internal method")
}
}
fileprivate class FileprivateClass {
fileprivate var fileprivateProperty = 0
fileprivate func fileprivateMethod() {
print("Fileprivate method")
}
}
class PrivateClass {
private var privateProperty = 0
private func privateMethod() {
print("Private method")
}
}
요약
Open: 모듈 내외부에서 접근, 서브클래싱, 오버라이딩 가능
Public: 모듈 내외부에서 접근 가능, 서브클래싱 및 오버라이딩 불가
Internal: 동일 모듈 내에서 접근 가능
Fileprivate: 동일 파일 내에서 접근 가능.
Private: 동일 선언 내부에서만 접근 가능.
각 접근 제한자는 데이터 은닉성과 클래스의 인터페이스를 어떻게 설계할지에 중요한 역할을 합니다. 필요한 경우에 맞는 접근 수준을 선택하여 코드의 안정성과 유지보수성을 높일 수 있습니다.
'Swift '문법'' 카테고리의 다른 글
프로퍼티 옵저버 (0) | 2024.08.06 |
---|---|
ARC와 메모리 누수 (0) | 2024.08.02 |
프로토콜(Protocols) (0) | 2024.07.31 |
for - in 반복문 (1) | 2024.07.24 |
while (0) | 2024.07.23 |