[Swift 기초] 프로토콜(Protocol)

justdotheg·2024년 1월 31일
0
post-thumbnail

1. '프로토콜(Protocol)'이란

  • 프로토콜은 "규약"이라는 의미를 가지고 있다.
  • 프로토콜은 데이터소스와 델리게이트 패턴에 사용된다.
protocol ProtocolA {
	var mustBeSettable: Int { get set }
    func mustBeImplemented()
}

2. 프로토콜을 구현한 클래스

  • 프로토콜은 클래스가 "상속한다"라는 표현을 쓰듯이, 사용할 때 "도입한다", "구현한다"라는 표현을 사용한다.
class ClassA: ProtocolA {
	var mustBeSettable: Int
    
    func mustBeImplemented(){
		print("method implemented by some class")
    }
}

3. '프로토콜 구현'과 '클래스 상속'의 차이점

요약 - 클래스는 하나의 슈퍼클래스만 상속받을 수 있지만, 프로토콜은 여러개 도입(구현) 가능기 때문이다.

그렇다면 프로토콜을 도입하는 것은 클래스를 상속받는 것과 차이점이 없어보이지 않는가..?

아래 예제를 봐보자.

class ClassB {
	...
}
protocol ProtocolB {

}

아래 SomeClass는 슈퍼클래스인 SomeSuperClass를 상속받고, 그 뒤에 SomeProtocol, SomeOtherProtocol 프로토콜을 구현하였다.

만약 클래스 상속과, 프로토콜 여러개를 도입(구현)하고 싶다면 첫번째 자리는 (:) 뒤의 첫번째 자리는 무조건 슈퍼클래스가 와야 한다.
그리고 그 뒤에 (,)를 찍고 프로토콜 여러개를 나열하면 된다.

그 이유는 클래스는 하나의 슈퍼클래스만 상속받을 수 있지만, 프로토콜은 여러개 도입(구현) 가능기 때문이다.

class ClassA: ClassB, ProtocolA, ProtocolB {
	var mustBeSettable: Int
    
    func mustBeImplemented(){
		print("method implemented by some class")
    }
}

0개의 댓글