iOS/Swift

[Swift] 프로토콜 protocol

유훈 | Yuhun 2022. 1. 25. 00:43
반응형
// 프로토콜
// protocol 프로토콜 이름 {
    // 정의
//}

import CoreGraphics

// 프로토콜을 채용하면 해당 조건을 지켜줘야 한다.

protocol a {
    // 프로퍼티는 항상 var로 요구
    // get은 익기만 가능해도 됨
    // get set은 읽기 쓰기 모두 가능해야 함
    var topic: String { get set }
    var language: String{ get }
    
    // 메서드 요구
    // 구현은 안해도 됨
    func talk()
    
    // 생성자 요구
    init(topic: String, language: String)
}

// 프로토콜 채택
struct Person: a {
    var topic: String
    let language: String
    
//    var subject: String = ""
//    // 위 프로퍼티는 연산 프로퍼티로 대체 가능
//    var topic: String {
//        set{
//            self.subject = newValue
//        }
//        get {
//            return self.subject
//        }
//    }
//    var language: String {return "한국어"}
//    // 또는
//    var language: String{ get{ return "한국어" }}
    
    func talk() {
        print("프로토콜에 따라 talk 구현")
    }
    
    init(topic: String, language: String){
        self.topic = topic
        self.language = language
    }
}

// 프로토콜은 상속이 가능하다.
// 심지어 클래스와 다르개 여러개의 상속이 가능하다.
// protocol 프로토콜 : 부모 프로토콜 { }

protocol Read {
    func read()
}
protocol Talk{
    func talk()
}
// 다중 상속
protocol ReadWriteSpeak: Read, Talk{
    func talk()
}

// 클래스 상속에 따른 프로토콜

// 상속 순서가 중요하다
// class 클래스 이름: 부모 클래스, 프로토콜 {}

출처 : 야곰 스위프트 기본 문법 강좌

반응형

'iOS > Swift' 카테고리의 다른 글

[Swift] 고차함수 map, filter, reduce  (0) 2022.01.25
[Swift] extension 익스텐션  (0) 2022.01.25
[Swift] assert 와 guard  (0) 2022.01.25
[Swfit] 옵셔널 체이닝  (0) 2022.01.24
[Swift] 클래스의 생성자와 소멸자  (0) 2022.01.24