프로토콜
예시
protocol 프로토콜이름 {
// 프로토콜 정의
}
// 상속받는 클래스의 프로토콜 채택
class 클래스이름: 슈퍼클래스, 프로토콜1, 프로토콜2 {
// 클래스 정의
}
protocol Vehicle {
var speed: Double { get set } // get과 set을 모두 요구하는 가변 속성
var manufacturer: String { get } // 읽기 전용 속성
}
class Car: Vehicle {
var speed: Double = 0.0 // get과 set이 요구되는 속성을 구현
var manufacturer: String = "Toyota" // 읽기 전용 속성을 구현
}
class Bicycle: Vehicle {
var speed: Double = 0.0
var manufacturer: String { return "Giant" } // 읽기 전용 속성을 연산 프로퍼티로 구현
}
let car = Car()
car.speed = 60.0 //set
print(car.speed) //get
print(car.manufacturer) //get
let bike = Bicycle()
bike.speed = 20.0 //set
print(bike.speed) //get
print(bike.manufacturer) //get