상속이란 클래스를 Swift의 다른 자료형들과 다르게 만들어 주는 기능이다.
클래스는 다른 클래스의 메소드, 프로퍼티, 다른 성질까지 모두 상속받을 수 있다.
이때 클래스가 상속하는 클래스를 superclass
,
이 클래스를 상속받는 클래스를 subclass
라고 한다.
서브클래스는 슈퍼클래스가 가지고 있는 메소드, 프로퍼티, subscripts까지 모두 호출하고 접근해서 사용할 수 있고, 자기 입맛대로 클래스를 구성하기 위해서 오버라이딩을 이용할 수도 있음!
아무 클래스도 상속받지 않는 클래스를 Base Class 라고 함!
class Vehicle {
var currentSpeed = 0.0
var description: String {
return "traveling at \(currentSpeed) miles per hour"
}
func makeNoise() {
// do nothing - an arbitrary vehicle doesn't necessarily make a noise
}
}
걍 요런식으로 생성하면 됨.
makeNoise
함수는 아무것도 구현이 안 돼 있는데 나중에 상속받은 클래스에서 마저 구현할거!
위에서 만든 클래스를 상속받을거임!
상속받는 문법은 쉬우니까 패스하고 바로 예제를 보면,
class Bicycle: Vehicle {
var hasBasket = false
}
이런식으로 subclass Bicycle
을 만들어서 Vehicle
을 상속받음!
그러면 Vehicle
의 모든 프로퍼티, 함수가 Bicycle
에 자동으로 들어오는 거고, hasBasket
프로퍼티는 Bicycle
에 더해진 것!
let bicycle = Bicycle()
bicycle.hasBasket = true
bicycle.currentSpeed = 15.0
print("Bicycle: \(bicycle.description)")
// Bicycle: traveling at 15.0 miles per hour
요런식으로 인스턴스를 만들어서 접근할 수 있다. 값도 바꿀 수 있음!
class Tandem: Bicycle {
var currentNumberOfPassengers = 0
}
let tandem = Tandem()
tandem.hasBasket = true
tandem.currentNumberOfPassengers = 2
tandem.currentSpeed = 22.0
print("Tandem: \(tandem.description)")
// Tandem: traveling at 22.0 miles per hour
이런식으로 이미 상속받은 subclass를 또한번 더 상속할 수도 있음!