클래스의 인스턴스 프로퍼티에 대한 접근을 은닉하는 방법은 무엇인가요?
가장 일반적인 접근 제어자는 다음과 같이 3가지가 있습니다:
-
Public (공용): 어떤 다른 클래스나 모듈에서도 접근 가능합니다. 기본 접근 제어자이며, 별도로 명시하지 않으면 프로퍼티는 자동으로 공용으로 설정됩니다.
-
Private (비공용): 해당 클래스 내부에서만 접근 가능합니다. 다른 클래스나 모듈에서는 접근할 수 없습니다.
-
Protected (보호된): 해당 클래스 내부와 동일한 모듈 또는 하위 클래스에서만 접근 가능합니다.
다음은 Swift 언어를 사용한 예제 코드입니다.
class MyClass {
private var privateProperty: Int = 10
public var publicProperty: String = ""
private func privateMethod() {
// 비공용 메소드의 구현
}
public func publicMethod() {
// 공용 메소드의 구현
}
}
let instance = MyClass()
instance.privateProperty = 20 // 컴파일 에러: 비공용 프로퍼티에 직접 접근할 수 없음
instance.publicProperty = "Hello" // 정상적으로 접근 가능
instance.privateMethod() // 컴파일 에러: 비공용 메소드에 직접 접근할 수 없음
instance.publicMethod() // 정상적으로 접근 가능
위의 코드에서 privateProperty
는 비공용이므로 MyClass
외부에서는 접근할 수 없습니다. 마찬가지로 privateMethod
도 비공용이므로 외부에서 호출할 수 없습니다. 하지만 publicProperty
와 publicMethod
는 공용으로 설정되어 있으므로 클래스 외부에서도 접근할 수 있습니다.
이와 같이 접근 제어자를 사용하여 클래스의 인스턴스 프로퍼티에 접근을 제어함으로써, 데이터의 은닉과 보호를 할 수 있습니다.