본문 바로가기

개발

Swift 접근 제어 (Access Control)

728x90

Swift 접근 제어 (Access Control)

Swift의 접근 제어는 코드의 구조, 보안, 유지 관리를 위한 강력한 기능입니다. 코드의 특정 부분에 대한 접근을 제한하여 코드를 보호하고, 다른 개발자가 코드를 쉽게 이해하고 사용할 수 있도록 돕습니다. Swift에서는 다음과 같은 다양한 접근 제어 수준을 제공합니다.

1. 접근 제어 종류

  • public: 어디서든 접근 가능합니다.
  • internal: 같은 모듈 내에서만 접근 가능합니다.
  • private: 같은 소스 파일 내에서만 접근 가능합니다.
  • fileprivate: 같은 모듈 내에서 같은 소스 파일 혹은 그 파일에 정의된 확장 내에서만 접근 가능합니다.
  • open: 서브클래스에서 재정의 가능합니다. (public과 유사하지만 상속 가능하다는 점에서 차이가 있습니다.)

2. 적용 범위

  • 타입: 클래스, 구조체, 열거형, 프로토콜 등의 타입에 적용됩니다.
  • 멤버: 타입의 속성, 메서드, 서브스크립트 등의 멤버에 적용됩니다.
  • 코드 블록: if, for, while과 같은 코드 블록에 적용됩니다.

3. 예시

public class Person {

    public var name: String

    private var age: Int



    public func getName() -> String {

        return name

    }



    private func getAge() -> Int {

        return age

    }

}



let person = Person(name: "철수")

print(person.getName()) // 접근 가능

// print(person.age) // 오류: 접근 불가능



class Student: Person {

    override public func getName() -> String {

        return "\(super.getName()) 학생"

    }

}



let student = Student(name: "영희")

print(student.getName()) // 접근 가능 (오버라이딩된 메서드 접근)

 

4. 활용 사례

  • 코드 보호: 중요한 코드를 숨기거나 제한된 사용자만 접근하도록 하여 코드를 보호합니다.
  • 캡슐화: 코드의 내부 구현을 숨기고 외부 인터페이스만을 제공하여 코드를 명확하고 이해하기 쉽게 만듭니다.
  • API 디자인: 사용하기 쉽고 안전한 API를 디자인할 수 있도록 합니다.
  • 코드 재사용: 다른 개발자가 코드를 쉽게 재사용할 수 있도록 합니다.

5. 참고 자료

 

주의: 접근 제어를 잘못 사용하면 코드가 복잡해지거나 예상치 못한 동작을 초래할 있습니다. 따라서, 접근 제어를 사용하기 전에 기본 개념을 이해하고, 적절하게 사용하는 것이 중요합니다. 또한, 복잡한 접근 제어 구조는 오히려 코드 가독성을 저하시킬 있으므로 주의해서 사용해야 합니다.