(swift) 16. Protocol (프로토콜)

Reading time ~1 minute

[swift] 16. Protocol (프로토콜)


프로토콜이란 특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 의미한다.

protocol 이름 {

}




protocol 사용 방법

protocol SomeProtocol {

}

protocol SomeProtocol2 {

}

struct SomeStructure: SomeProtocol, SomeProtocol2 { // 프로토콜 채택

}

struct SomeStructure2: SuperClass, SomeProtocol, SomeProtocol2 { // 상속받을 클래스가 있다면 클래스를 맨 앞에 적는다.

}

protocol FirestProtocl {
    var name: Int { get set } // 읽기, 쓰기가 가능한 property
    var age: Int { get }    // 읽기만 가능한 property
}

protocol AnotherProtocol {
    static var someTypeProperty: Int { get set }    // 프로토콜에서 타입 프로퍼티를 요구하려면 맨 앞에 static을 작성.
}

protocol SomeProtocol3 {
    func someTypeMethod()   // 메소드 요구사항 정의
    // 메서드에 필요한 매개변수를 정의해 주어야 한다.(default 값은 지정할 수 없다.)
}

protocol SomeProtocol4 {
    init(someParameter: Int)
}

protocol SomeProtocol5 {
    init()
}

class SomeClass: SomeProtocol5 {
    required init() {   // 클래스에서는 생성자 요구사항을 만족시키기 위해서는 required가 필요하다. (만약 클래스 자체가 상속받을 수 없는 final 클래스라면 required를 붙일 필요가 없다.)

    }
}




예제

protocol FullyNames {
    var fullName: String { get set }
    func printFullName()
}

struct Person: FullyNames {
    var fullName: String 
    fullName = "이준혁"
    func printFullName() {
        print(fullName)
    }

    // 위 변수와 메서드를 정의하지 않으면 프로퍼티의 요구사항을 충족시키지 않아 에러가 발생한다.
}

출력 결과

이준혁

Gitpporter Privacy

Published on January 02, 2023

(PillSoGood) 지원

Published on November 20, 2022