728x90
반응형
1. 프로토콜(protocol)
- 특정 클래스와 관련 없는 프로퍼티, 메서드 선언 집합
- 함수(메서드) 정의는 없음
- 기능이나 속성에 대한 설계도
- 클래스(구조체, 열거형)에서 채택(adopt)하여 메서드를 구현해야 한다.
- 자바와 C#에서 interface에 해당하는 것이다.
- C++의 abstract base class
- Protocol Oriented Programming(POP)
- 프로토콜 단위로 묶어서 표현하고, extension으로 기본적인 것을 구현(protocol default implementation)을 해서 단일 상속의 한계를 극복하고자 하는 프로그래밍 기법이다.
2. 스위프트 상속과 프로토콜 채택
- 부모 클래스는 하나만 가능하며 여러 개라면 나머지는 프로토콜
- class 클래스명:부모명, 프로토콜명{ }
- 부모가 있으면 부모 다음에 표기
- class 클래스명:부모명, 프로토콜명1, 프로토콜명2{ }
- class 클래스명: 프로토콜명{ }
- 부모가 없으면 바로 표기 가능
- class 클래스명:프로토콜명1, 프로토콜명2{ }
- 클래스, 구조체, 열거형, extension에 프로토콜을 채택(adopt)할 수 있다.
- 상속은 클래스만 가능하다.
3. protocol 정의
4. 프로토콜과 프로퍼티/메서드 선언
5. protocol 채택과 준수
- 5행에서 부모를 썼다면 부모로부터 상속을 받았다고 표현하고 프로토콜을 옆에 쓴다면 프로토콜을 채택(adopt)했다고 표현한다.
- class Man에 x, run() 정의가 없다면
- type 'Man' does not conform to protocol 'Runnable'
6. 예제
-다음 기능을 전체 하나의 소스로 작성하시오.
-bb()라는 메소드가 하나 있는 프로토콜(protocol) B를 만드시오.
-bb() 메서드는 Int형 값을 매개변수로 받아 Int형으로 리턴하는 메서드이다.
-클래스 A는 클래스 C라는 부모를 갖는다.(C로부터 상속 받는다.)
-클래스 A에서 프로토콜 B를 채택하고, 준수하는 소스를 작성하시오.
-bb()메서드는 Int형 값을 매개변수로 받아 2배한 값을 Int형으로 리턴하는 메서드이다.
728x90
반응형
'Apple > Swift' 카테고리의 다른 글
[Swift] 리터럴, 식별자, 키워드 (0) | 2023.07.11 |
---|---|
[Swift] 열거형(enum) (0) | 2023.02.12 |
[Swift] 익스텐션과 접근 제어 (0) | 2023.02.09 |
[Swift] 클래스와 상속, super와 override (0) | 2023.02.08 |
[Swift] computed property, stored property, self, overloading (0) | 2023.02.01 |