swift

swift - Protocols #1 (Syntax)

행복하게사는게꿈 2021. 1. 12. 18:04

Protocols

 

 

- 형식에서 기본적으로 제공하는 멤버 목록

 

- 프로토콜은 형식에서 구현되어야 하는 멤버 목록이 있다. , 실제 구현은 프로토콜에 선언되어 있지 않다.

 

- class와 struct같은 형식들이 protocal에 잇는 멤버를 구현한다.

 

   -> 프로토콜을 채용한다.

 

   -> 프로토콜을 채용하면 프로토콜에 있는 필수 멤버들을 반드시 구현해야함 

 


Syntax

 

- protocal 키워드로 선언

 

- uppercamelcase로 선언

 

- { } 사이에는 멤버 선언만 (구현 x)

 

 - 상속을 지원한다 (class 상속과 동일)

 

 - 다중 상속을 허용한다. (class는 단일 상속만 허용)

 

 

protocol Something {
    func doSomething()
}

// 프로토콜 채용
// 클래스가 다른 클래스를 먼저 상속하고 동시에 다른 프토토콜을 채용하고 있다면 항상 superClass이름을 먼저 나열해야 함

struct Size: Something {
    func doSomething() {
        // 마음대로 구현
    }
}

// AnyObject를 사용하면 구조체나 열거형 오브젝트에서는 사용 불가능
protocol SomethingObject: AnyObject, Something {
    
}

// 구조체에서는 채용 불가능
//struct Value: SomethingObject {
//}

class Object: SomethingObject {
    func doSomething() {
        // SomthingObject에는 멤버가 없지만 채용한 Something에는 멤버가 있기때문에 필수 멤버를 구현해줘야 함
    }
}