728x90
반응형
상속이란?
- 부모가 자식에게 재산을 물려주는 행위
- 클래스가 다른 클래스로부터 메서드, 프로퍼티 또는 다른 속성들을 상속받는 것
- 다른 클래스에서 상속받지 않은 클래스를 베이스 클래스라고 한다.
- final로 정의하게 되면 오버라이드 불가능, super class 불가능
class 클래스 이름: 부모클래스 이름 {
// 하위 클래스 정의
}
상속 예시
Vehicle 클래스를 먼저 정의한다.
class Vehicle {
var currentSpeed = 0.0
var description: String {
return "traveling at \(currentSpeed) miles per hour"
}
func makeNoise(){
print("speaker on")
}
}
Vehicle을 상속받는 Bicycle을 정의한다.
Bicycle은 Vehicle을 상속받기 때문에 currentSpeed를 설정해줄 수 있다.
class Bicycle: Vehicle {
var hasBasket = false
}
var bicycle = Bicycle()
bicycle.currentSpeed = 15.0
Vehicle을 상속받는 Train 클래스도 정의해준다.
makeNoise 함수를 실행하면 오버라이드 된 함수 makeNoise 내에서
부모 클래스인 Vehicle의 makeNoise가 먼저 실행된 후, "choo choo"가 출력되는 것을 볼 수 있다.
class Train: Vehicle {
override func makeNoise() {
super.makeNoise()
print("choo choo")
}
}
let train = Train()
train.makeNoise()
// Prints "speaker on"
// Prints "choo choo"
Vehicle을 상속받는 Car를 정의하고, 이 Car를 상속받는 AutomaticCar를 정의한다.
따라서 description을 출력하게 되면 상속받은 것들이 합쳐져 출력되는 것을 볼 수 있다.
class Car: Vehicle {
var gear = 1
override var description: String {
return super.description + " in gear \(gear)"
}
}
var car = Car()
car.currentSpeed = 30.0
car.gear = 2
class AutomaticCar: Car {
override var currentSpeed: Double {
didSet {
gear = Int(currentSpeed / 10) + 1
}
}
}
let automatic = AutomaticCar()
automatic.currentSpeed = 35.0
print("AutomaticCar: \(automatic.description)") // AutomaticCar: traveling at 35.0 miles per hour in gear 4
출처: [패스트캠퍼스] 30개 프로젝트로 배우는 iOS 앱 개발 with Swift 초격차 패키지 Online.
728x90
반응형