-
Swift 5.6 Inheritance기술/iOS 2022. 3. 20. 17:48
Inheritance
Defining a Base Class
다른 클래스에서 상속하지 않은 클래스를 기본 클래스라고 합니다.
SubClassing
하위 클래스는 기존 클래스를 기반으로 클래스를 만드는 작업잉ㅂ니다. 하위 클래스는 기존 클래스의 특성을 상속하므로 수정할 수 있습니다. 하위 클래스에 새로운 특성도 추가할 수 있습니다.
class SomeSubclass: SomeSuperclass { // subclass definition goes here }
Overriding
하위 클래스는 상위 클래스에서 상속할 인스턴스 메서드, 타입 메서드, 인스턴스 프로퍼티, 타입 프로퍼티, 또는 서브스크립트 자체 사용자 구현을 제공할 수 있습니다. 이것을 재정의라고 합니다.
상속될 특성을 재정의하려면 재정의 할 정의 앞에 override 키워드를 추가합니다. 이렇게 하면 재정의를 명확하게 제공하고 실수로 일치하는 정의를 제공하지 않도록 합니다. 실수로 재정의 하면 예기치 않은 동작을 야기하고 override 키워드 없이 재정의하면 코드가 컴파일 될 때 에러를 발생합니다.
Accessing Superclass Methods, Properties, and Subscripts
하위 클래스에서 메서드, 프로퍼티 또는 서브스크립트 재정의를 제공할 때 재정의의 일부로 상위 클래스 구현을 사용하는 것이 유용할 때가 있습니다. 이 때 super 접두어를 통해 상위 클래스의 메서드, 프로퍼티 또는 서브스크립트에 접근할 수 있습니다.
Overriding Methods
class Train: Vehicle { override func makeNoise() { print("Choo Choo") } }
Overriding Property Getters and Setters
class Car: Vehicle { var gear = 1 override var description: String { return super.description + " in gear \\(gear)" } }
Overriding Property Observers
class AutomaticCar: Car { override var currentSpeed: Double { didSet { gear = Int(currentSpeed / 10.0) + 1 } } }
Preventing Overrides
final 키워드를 통해 메서드, 프로퍼티 또는 서브스크립트의 재정의를 방지할 수 있습니다.
'기술 > iOS' 카테고리의 다른 글
Swift 5.6 Deinitialization (0) 2022.03.20 Swift 5.6 Initialization (0) 2022.03.20 Swift 5.6 Subscripts (0) 2022.03.20 Swift 5.6 Methods (0) 2022.03.20 Swift 5.6 Properties (0) 2022.03.20 TAG