접근 제어자

JG Ahn·2024년 10월 31일

swift 기초

목록 보기
19/23
post-thumbnail

1. swift에서 제공하는 접근제어자

  • open
    • 모든 외부 모듈에서 접근 가능 (가장 개방적인 접근 수준)
    • class에서만 사용 가능 (상속, 재정의 가능하기 때문)
  • public
    • 모든 외부 모듈에서 접근 가능 (가장 개방적인 접근 수준)
    • open과 달리 class, enum, struct 모두 사용 가능
  • internal
    • 접근제어자를 설정하지 않은 기본값 상태
    • 동일 모듈에서 접근 가능
  • fileprivate
    • 동일한 파일 내부에서만 접근 가능
  • private
    • 가장 제한적인 접근 제어자
    • priave을 선언한 스코프(코드블록)에서만 사용 가능
    • struct에서 private 프로퍼티가 있다면 멤버와이즈 불가로 직접 초기화 해야함
struct Person {
    var name: String //internal
    public var age: Int
    private var havingMoney: Int
    
    init(name: String, age: Int, havingMoney: Int) {
        self.name = name
        self.age = age
        self.havingMoney = havingMoney
    }
    
    private func printMoney() {
        print("나는 \(havingMoney) 원 있다!")
    }

    func test() {
        printMoney()
    }
}


let person = Person(name: "harry", age: 20, havingMoney: 3000)

//test 함수는 internal이기 때문에 호출 가능
//test 함수 안에서는 private printMoney 함수에 접근 가능
person.test() //결과 : 나는 3000 원 있다!

//public이라서 접근 가능
person.age

// ❌ 빌드 오류 발생
person.havingMoney // havingMoney는 private 프로퍼티이기 때문에 접근 불가
person.printMoney() // printMoney함수는 private 메소드이기 때문에 접근 불가

0개의 댓글