프로토콜 상속
프로토콜은 한 개 이상의 프로토콜로부터 요구 사항을 상속받을 수 있으며, 요구 사항을 추가할 수도 있다.
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 사용 시 프로토콜을 준수하지 않는 경우 위와 같이 에러가 발생하며 준수사항을 알려준다.
위는 프로토콜 준수하는 객체를 생성하고 활용한 예시다.