본문으로 건너뛰기

프로토콜 상속

프로토콜은 한 개 이상의 프로토콜로부터 요구 사항을 상속받을 수 있으며, 요구 사항을 추가할 수도 있다.

protocol ProtocolThree: ProtocolOne, ProtocolTwo {
// implementing requirement
}

스위프트에서 프로토콜 상속을 위한 문법은 한 개 이상의 프로토콜을 상속할 수 있다는 점만 제외하면 클래스 상속을 위한 문법과 매우 유사하다. 프로토콜 상속의 동작 방식에 대해 알아보자.

앞서 정의한 FullName 프로토콜을 사용해 Person이라는 이름의 새로운 프로토콜을 생성한다.

protocol Person: FullName { // FullName 프로토콜 상속
var age: Int {get set} // 요구사항 추가
}

Person 프로토콜을 따르는 타입을 생성할 때 Person 프로토콜에 정의된 요구 사항 뿐 아니라 FullName 프로토콜에 정의된 요구 사항 역시 반드시 구현해야 한다.

struct Student: Person {
var firstName = ""
var lastName = ""
var age = 0

func getFullName() -> String {
"\(firstName) \(lastName)"
}
}

프로토콜 준수 에러

xcode 사용 시 프로토콜을 준수하지 않는 경우 위와 같이 에러가 발생하며 준수사항을 알려준다.

프로토콜을 준수한 객체활용

위는 프로토콜 준수하는 객체를 생성하고 활용한 예시다.