Develop/iOS
Swift 프로토콜 (Protocol)
불로소득달인
2019. 5. 10. 18:38
반응형
JAVA의 interface와 비슷한 역할인 Swift의 protocol 이다.
프로토콜 (protocol)
- 특정 역할을 수행하기 위한 메서드, 프로퍼티, 기타 요구사항을 정의함
- 구조체, 클래스, 열거형은 프로토콜을 채택(Adopted)해서 특정 기능을 수행하기 위한 프로토콜의 요구사항을 실제로 구현
- 타입에서 프로토콜의 요구사항을 충족시키려면 프로토콜이 제시하는 청사진의 기능을 모두 구현해야 한다.
프로토콜의 정의
protocol 프로토콜명 {
/* 정의부 */
}
프로토콜의 구현
- 프로토콜은 항상 var 키워드를 사용한다.
protocol Viewer {
//프로퍼티 요구
var viewer : String { get set };
var language : String { get };
//메소드 요구
func viewContent();
//이니셜라이저 요구
init(viewer:String, language:String);
}
struct Person : Viewer { // protocol 채택
var viewer : String;
let language : String;
func viewContent(){
print("시청중");
}
init(viewer:String, language:String){
self.viewer = viewer;
self.language = language;
}
}
Viewer protocol에 정의된 프로퍼티를 Person 구조체에서 구현하였다.
프로토콜의 상속
프로토콜은 상속이 가능하며 다중 상속이 가능하다.
protocol TempA{
func tempFuncA();
}
protocol TempB{
func tempFuncB();
}
protocol TempC : TempA, TempB{
func tempFuncC();
}
struct RealTemp : TempC { //TempC를 상속받았으므로 TempA, TempB에 정의된 메소드를 같이 구현해야 한다.
func tempFuncA(){
print("TempA 입니다.");
}
func tempFuncB(){
print("TempB 입니다.");
}
func tempFuncC(){
print("TempC 입니다.");
}
}
TempC는 TempA, TempB를 상속받았고 RealTemp는 TempC를 상속받았기 때문에 RealTemp는 세개의 메소드를 구현해야 사용 할 수 있다.
반응형