반응형
// 프로토콜
// protocol 프로토콜 이름 {
// 정의
//}
import CoreGraphics
// 프로토콜을 채용하면 해당 조건을 지켜줘야 한다.
protocol a {
// 프로퍼티는 항상 var로 요구
// get은 익기만 가능해도 됨
// get set은 읽기 쓰기 모두 가능해야 함
var topic: String { get set }
var language: String{ get }
// 메서드 요구
// 구현은 안해도 됨
func talk()
// 생성자 요구
init(topic: String, language: String)
}
// 프로토콜 채택
struct Person: a {
var topic: String
let language: String
// var subject: String = ""
// // 위 프로퍼티는 연산 프로퍼티로 대체 가능
// var topic: String {
// set{
// self.subject = newValue
// }
// get {
// return self.subject
// }
// }
// var language: String {return "한국어"}
// // 또는
// var language: String{ get{ return "한국어" }}
func talk() {
print("프로토콜에 따라 talk 구현")
}
init(topic: String, language: String){
self.topic = topic
self.language = language
}
}
// 프로토콜은 상속이 가능하다.
// 심지어 클래스와 다르개 여러개의 상속이 가능하다.
// protocol 프로토콜 : 부모 프로토콜 { }
protocol Read {
func read()
}
protocol Talk{
func talk()
}
// 다중 상속
protocol ReadWriteSpeak: Read, Talk{
func talk()
}
// 클래스 상속에 따른 프로토콜
// 상속 순서가 중요하다
// class 클래스 이름: 부모 클래스, 프로토콜 {}
반응형
'iOS > Swift' 카테고리의 다른 글
[Swift] 고차함수 map, filter, reduce (0) | 2022.01.25 |
---|---|
[Swift] extension 익스텐션 (0) | 2022.01.25 |
[Swift] assert 와 guard (0) | 2022.01.25 |
[Swfit] 옵셔널 체이닝 (0) | 2022.01.24 |
[Swift] 클래스의 생성자와 소멸자 (0) | 2022.01.24 |