[Swift] Inheritance(1)

상 원·2022년 7월 17일
0

Swift

목록 보기
21/31
post-thumbnail

상속이란 클래스를 Swift의 다른 자료형들과 다르게 만들어 주는 기능이다.
클래스는 다른 클래스의 메소드, 프로퍼티, 다른 성질까지 모두 상속받을 수 있다.

이때 클래스가 상속하는 클래스를 superclass,
이 클래스를 상속받는 클래스를 subclass 라고 한다.

서브클래스는 슈퍼클래스가 가지고 있는 메소드, 프로퍼티, subscripts까지 모두 호출하고 접근해서 사용할 수 있고, 자기 입맛대로 클래스를 구성하기 위해서 오버라이딩을 이용할 수도 있음!

Base Class 정의하기

아무 클래스도 상속받지 않는 클래스를 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 함수는 아무것도 구현이 안 돼 있는데 나중에 상속받은 클래스에서 마저 구현할거!

Subclassing

위에서 만든 클래스를 상속받을거임!
상속받는 문법은 쉬우니까 패스하고 바로 예제를 보면,

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를 또한번 더 상속할 수도 있음!

profile
ios developer

0개의 댓글