특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진
protocol SomeProtocol {
}
protocol SomeProtocol2 {
}
struct SomeStructure : SomeProtocol, SomeProtocol2 {
}
class SomeSuperclass {
}
class SomeClass : SomeSuperclass, SomeProtocol, SomeProtocol2 {
}
이와같이 프로토콜을 따르도록 한다.
protocol FirstProtocol {
var name : Int { get set }
var age : Int { get } // 읽기 전용
}
protocol AnotherProtocol {
static var someTypeProperty : Int { get set }
}
protocol FullyNames {
var fullName : String { get set }
func printFullName()
}
struct Person : FullyNames {
var fullName : String
func printFullName () {
print(fullName)
}
}
protocol SomeProtocol3 {
func someTypeMethod()
}
protocol SomeProtocol4 {
init(someParameter : Int)
}
protocol SomeProtocol5 {
init()
}
class SomeClass : SomeProtocol5 {
required init() { // class에서 생성자 요구사항을 채택하려면 required 키워드가 필요하다. struct는 x
}
}