정의
= 특정 클래스와 관련없는 프로퍼티, 메서드 선언 집합
- 함수 정의는 없다.
- 기능이나 속성에 대한 설계도
- 클래스(구조체, 열거형)에서 채택(adopt)하여 메서드를 구현
형식
class 자식:부모 {
}
- 부모 클래스는 하나만 상속, 뒤에오는 나머지는 프로토콜
- 클래스, 구조체, 열거형, extension에 프로토콜을 채택 할 수 있다 ( 상속은 클래스만 가능 )
ex) class 클래스명 : 부모명, 프로토콜1, 프로토콜2 { }
- 부모가 없으면 바로 프로토콜 채택 가능
ex) calss 클래스명 : 프로토콜1, 프로토콜2 { }
프로토콜 정의
protocol 프로토콜명{
//프로퍼티명
//메서드 선언//메서드는 선언만 존재
}
protocol 프로토콜명 : 프로토콜1, 프로토콜2{
// 프로토콜은 다중 상속도 지원
}
프로토콜 예제 1
- 채택 후 클래스 내에서 프로토콜에 대한 내용을 정의( 준수, Conform )하지 않으면 오류가 발생한다.
protocol Runnable{
var x : Int {get set}
func run()
}
class Man : Runnable{ // 프로토콜 채택
var x : Int = 8 // 반드시 정의 해줘야함.
func run(){ // 반드시 정의 해줘야함.
print("달려!")
}
}
let hwang = Man()
print(hwang.x)
hwang.run()
실행결과
// 8
// 달려!
프로토콜 예제 2
protocol B {
func bb(x:Int) -> Int
}
class C{
}
class A : C, B{
func bb(x:Int) -> Int {
return x*2
}
}
let a : A = A()
print(a.bb(x:2))
실행결과
// 4
강의 출처 : https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA
'2022_iOS 앱 개발자 워크숍 > 1, Swift 문법 복습' 카테고리의 다른 글
Swift : Enum고급 [ rawValue, associated value ] (0) | 2022.01.11 |
---|---|
Swift : Enum [ 열거형 ] (0) | 2022.01.08 |
Swift : 접근 제어 [ Access modifier ] (0) | 2022.01.07 |
Swift : Extension (0) | 2022.01.07 |
Swift : Override (0) | 2022.01.07 |
댓글