[야곰] Swift 개념정리 - Protocols
Protocol
1. 프로토콜의 정의
프로토콜은 특정 작업이나 기능적으로 구현해야 할 메서드, 프로퍼티 그 외 요구사항을 정의한 청사진이다.
protocol ProtocolName{
// 요구사항 정의
}
타입에서 필요한 프로토콜을 채택(Adopted)하고 채택한 프로토콜을 준수(conform)하게 된다.
2. 프로토콜 구현
protocol Talkable{
var topic: Strig{ get set}
var language: String{ get }
func talk()
init(topic: String, language: String)
}
- 요구사항은 모두 var 타입이다.
- 구현해야할 기능을 제시하는 것이지 직접 구현 ❌
3. 프로토콜 채택 및 준수
struct Person : Talkable{
var topic: String
let language: String
func talk(){
print("\(topic)에 대해 \(language)로 말합니다")
}
init(topic: String, language: String){
self.topic = topic
self.language = language
}
}
- 타입 뒤에 [ : ]을 붙이고 채택하려는 프로토콜의 이름을 쓴다
- 읽기 전용으로 정의된 요구사항은 let으로 구현 가능 (물론 var도 가능)
- 채택한 프로토콜의 요구사항은 반드시 모두 구현해야 한다
4. 프로토콜 상속
protocol Readable{
func read()
}
protocol Writeable{
func write()
}
protocol ReadWriteSpeakable: ReadAble, Writeable{
func speak()
}
struct Human: ReadWriteSpeakable{
func read(){
//read 구현
}
func write(){
//write 구현
}
func speak(){
//speak 구현
}
}
- 프로토콜은 상속이 가능하며 클래스와 다르게 다중상속도 가능
- 클래스와 함께 상속 가능 ( 클래스, 프로토콜 순서로 써줘야 함)
5. 프로토콜 준수 확인
- is, as 연산자로 어떤 프로토콜을 준수하고 있는지 확인가능
채택한 프로토콜을 통해 타입이 어떤 기능을 수행해야 하는지 명확히 알 수 있고, 채택한 프로토콜만 봐도 이 타입이 어떤 기능을 수행하고 있는지 확연히 알 수 있다.
Author And Source
이 문제에 관하여([야곰] Swift 개념정리 - Protocols), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@juyoung999/야곰-Swift-개념정리-프로토콜저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)