[Swift] 상속

ds-k.mo·2022년 4월 29일
0

Swift

목록 보기
11/22

상속

클래스가 다른 클래스로부터 프로퍼티나 메소드 등을 상속받는 것
상속받는 클래스 : 자식 클래스, 서브 클래스
상속하는 클래스 : 부모 클래스, 슈퍼 클래스

코드 예시

// base class
class Vehicle {
    var currentSpeed = 0.0
    var description : String {
        return "traveling at \(currentSpeed) miles per hour"
    }
    func makeNoise(){
        print("부아앙아아아아앙")
    }
}

/*
 // sub class
 class 클래스 이름 : 부모클래스 이름 {
   // 하위 클래스 정의
 }
*/

class Bicycle : Vehicle {
    var hasBasket = false
}

var bicycle = Bicycle()

bicycle.currentSpeed = 15.0
bicycle.currentSpeed // 15
bicycle.makeNoise() // in Console : 부아앙아아아아앙

// 오버라이딩 : 서브클래스에서 슈퍼클래스의 기능을 자신만의 기능으로 바뀌는 것
// override 키워드를 사용

class Train : Vehicle {
    override func makeNoise() {
        super.makeNoise() // 슈퍼클래스에서 정의된 것부터 나오고 다음에 오버라이딩 된 특성이 나온다.
        print("추추~~")
    }
}

let train = Train()
train.makeNoise() // 부아앙아아아아앙, 추추~~

class Car : Vehicle {
    var gear = 1
    override var description : String {
        return super.description + " in gear \(gear)"
    }
}

let car = Car()
car.currentSpeed = 30.0
car.gear = 2
print(car.description) // traveling at 30.0 miles per hour in 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
// 프로퍼티 옵저버 didSet으로 슈퍼클래스인 Car의 프로퍼티인 gear를 변경한다.


class SomeClass {
    // final 키워드를 사용하면 상속이 불가능해진다.
    final var something : 1
}

0개의 댓글