[swift] 프로토콜과 프로토콜 확장 (Protocol Extension)의 차이

프로토콜과 프로토콜 확장은 Swift 언어에서 중요한 기능을 제공합니다. 그러나 이 둘에는 몇가지 중요한 차이점이 있습니다. 이 포스트에서는 두 기능의 차이점을 살펴보고, 각각의 사용 사례에 대해 알아보겠습니다.

프로토콜

프로토콜은 메소드, 프로퍼티, 그리고 요구사항을 정의할 수 있는 추상형(abstract type)입니다. 구조체, 클래스, 열거형에서 프로토콜을 채택하여 특정 요구사항을 충족시킬 수 있습니다. 예를 들어, Equatable 프로토콜은 == 연산자를 정의하는 요구사항을 포함하고 있습니다.

프로토콜을 채택하는 타입은 프로토콜에 정의된 요구사항을 모두 구현해야 합니다. 이는 코드의 일관성과 안정성을 유지하는 데 도움이 됩니다.

프로토콜 확장 (Protocol Extension)

프로토콜 확장은 프로토콜을 확장하여 이미 정의된 메소드나 프로퍼티의 구현을 제공합니다. 이를 통해 프로토콜을 채택하는 여러 타입에 대해 공통적인 구현을 제공할 수 있습니다. 또한, 프로토콜 확장을 사용하여 기존의 프로토콜에 새로운 기능을 추가할 수도 있습니다.

프로토콜 확장은 기본적으로 기존의 프로토콜에 새로운 기능을 추가하는 데 사용되지만, 기존의 프로토콜 요구사항을 수정하는 데에도 사용될 수 있습니다.

또한, 프로토콜 확장을 통해 기본 구현을 제공하면서, 필요에 따라 프로토콜을 채택한 개체에서 이를 재정의(override)할 수도 있습니다.

결론

프로토콜과 프로토콜 확장은 Swift에서 다형성(polymorphism) 및 코드의 재사용성을 높이는 데 중요한 도구입니다. 프로토콜은 요구사항을 정의하는데 사용되고, 프로토콜 확장은 이러한 요구사항을 충족시키기 위한 구현을 제공하는 데 사용됩니다.

이러한 두 가지 도구를 적절히 활용하여 코드를 더 모듈화하고 유연하게 만들 수 있습니다.

이상으로, 프로토콜과 프로토콜 확장의 차이에 대해 알아보았습니다.

참고 자료