프로토콜(Protocol)
💡 프로토콜(Protocol)
- 메소드, 프로퍼티 및 기타 요구사항을 정의하여 특정 작업 또는 기능의 일부로 사용될 수 있는 청사진
- 요구사항의 명세를 정의하고, 클래스, 구조체 또는 열거형에서 이러한 요구사항을 구현할 수 있도록 함
- 설계된 조건만 정의를 하고 제시를 할 뿐 스스로 기능을 구현하지 않음
- 프로토콜 내에서 정의되는 프로퍼티는 이름과 타입만 명시되며, gettable
과 settable
여부도 명시됨
- 메서드를 정의할 때 메서드 이름과 리턴값을 지정할 수 있지만, 실제 구현 코드는 {}
내부에 작성하지 않음
- 클래스 이외에도 struct
나 enum
도 프로토콜을 채택할 수 있음
- 상속은 단일 상속만 가능하지만, 프로토콜은 다중 상속이 가능, 이는 코드의 확장성을 높여줌
- 항상 var
로 선언
프로토콜(Protocol) 정의
protocol ProtocolName {
// 프로토콜에서 요구하는 메서드, 프로퍼티, 기타 요구사항 정의
}
프로토콜(Protocol) 채택
※ Circle
클래스는 Drawable
프로토콜을 채택하고, draw()
메서드를 구현하여 원을 그리는 로직 추가
class Circle: Drawable {
func draw() {
// 원 그리기 로직 구현
print("원을 그립니다.")
}
}
※ Square
구조체는 Drawable
프로토콜과 CustomStringConvertible
프로토콜을 동시에 채택하고, draw()
메서드와 description
프로퍼티 구현
struct Square: Drawable, CustomStringConvertible {
var sideLength: Double
func draw() {
// 정사각형 그리기 로직 구현
print("정사각형을 그립니다.")
}
var description: String {
return "한 변의 길이가 \(sideLength)인 정사각형"
}
}
' 𝗔𝗣𝗣𝗟𝗘 > SWIFT : GRAMMAR' 카테고리의 다른 글
Swift 기초 문법 - 제네릭(Generic) (2) | 2024.03.15 |
---|---|
Swift 기초 문법 - 확장(Extension) (0) | 2024.03.14 |
Swift 기초 문법 - ARC와 메모리 누수(Automatic Reference Counting) (0) | 2024.03.14 |
Swift 기초 문법 - 예외 처리(Exception Handling) (0) | 2024.03.13 |
Swift 기초 문법 - 고차함수(higher-order function) (0) | 2024.03.13 |