Override
- 부모(Super class) 클래스로부터 상속받는 메서드/프로퍼티를 자식(Sub class) 클래스에서 재정의하여 사용하는 것
- 부모 클래스의 속성을 자식 클래스에서 사용하고 싶을 때에는 super 키워드를 사용해 부모 클래스의 함수를 불러주면 됨
- 자식 클래스에서 재정의 하고자 하는 프로퍼티는 부모 클래스의 이름과 타입이 일치해야 함
- 프로퍼티 옵저버 추가도 가능
- 재정의 할 수 없도록 하기 위해선 부모 클래스에서 프로퍼티 / 함수명 앞에 final 키워드를 앞에 붙여주면 됨
class Vehicle {
var currentSpeed = 0.0
var description: String {
return "traveling at \(currentSpeed) miles per hour"
}
func makeNoise() {
print("sound on")
}
}
class Train: Vehicle {
override func makeNoise() {
super.makeNoise()
print("choo choo")
}
}
class Car: Vehicle {
var gear = 1
override var description: String {
return super.description + " in gear\(gear)"
}
}
class AutomaticCar: Car {
override var currnetSpeed: Double {
didSet {
gear = Int(currentSpeed / 10) + 1
}
}
}