티스토리 뷰

iOS 개발/Swift

[Swift 3] 상속 (Inheritance)

beankhan 2017. 4. 15. 18:56

출처

http://kka7.tistory.com/18



상속 (Inheritance)

Swift 는 상위 클래스의 정의가 일치하는지 확인하여
오버라이드가 정확히 되는 것을 보장한다.

클래스는 프로퍼티의 값이 변경되었을 때 순서대로 통지하도록
상속된 프로퍼티에 프로퍼티 옵저버를 추가할 수 있다.
옵저버는 저장프로퍼티, 계산프로퍼티 관계없이 모든 프로퍼티에 추가 가능하다.





상속 기본

아무 클래스도 상속받지 않은 클래스를 기본클래스라 한다.

Swift 클래스는 보편적인 기본 클래스로부터 상속받지 않는다.
상위 클래스를 지정하지 않은 클래스는 자동으로 기본클래스가 된다.

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

    }

}


let someVehicle = Vehicle()

print("Vehicle: \(someVehicle.description)")

// Vehicle: traveling at 0.0 miles per hour



상속된 클래스에서 상위 클래스의 프로퍼티에 접근할 수 있다.


class Bicycle: Vehicle {

    var hasBasket = false

}


let bicycle = Bicycle()

bicycle.hasBasket = true

bicycle.currentSpeed = 15.0

print("Bicycle: \(bicycle.description)")



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







오버라이딩 (Override)


오버라이딩을 할 때는 override 라는 키워드를 사용한다.

class Train: Vehicle {

    override func makeNoise() {

        print("Choo Choo")

    }

}


class Car: Vehicle {

    var gear = 1

    override var description: String {

        return super.description + " in gear \(gear)"

    }

}


let car = Car()

car.currentSpeed = 25.0

car.gear = 3

print("Car: \(car.description)")

// Car: traveling at 25.0 miles per hour in gear 3




프로퍼티 옵저버 오버라이딩


class AutomaticCar: Car {

    override var currentSpeed: Double {

        didSet {

            gear = Int(currentSpeed / 10.0) + 1

        }

    }

}


let automatic = AutomaticCar()

automatic.currentSpeed = 35.0

print("AutomaticCar: \(automatic.description)")

// AutomaticCar: traveling at 35.0 miles per hour in gear 4





오버라이드 막기 (Preventing Overrides)

final 로 표시하면 메소드, 프로퍼티, 서브스크립트가 오버라이드 하는 것을 막을 수 있다.
메소드, 프로퍼티, 서브스크립트 표시 키워드 앞에 final 로 작성한다.

final var someValue : Int






'iOS 개발 > Swift' 카테고리의 다른 글

[Swift 3] 해제 (Deinitialization)  (0) 2017.04.15
[Swift 3] 초기화 (Initialzer)  (0) 2017.04.15
[Swift 3] 서브스크립트 (Subscript)  (0) 2017.04.15
[Swift 3] 메소드 (Method)  (0) 2017.04.15
[Swift 3] 프로퍼티 (Property)  (0) 2017.04.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함