상속(Inheritance)
- 클래스에서 다른 클래스로 부터 상속할 수 있음
- 클래스에서 저장 프로퍼티, 계산 프로퍼티 상관없이 상속 받은 프로퍼티에 프로퍼티 옵저버를 사용해 값 설정에 반응할 수 있음
기반클래스
다른 어떤 클래스로부터 상속받지 않은 클래스 SomeSuperclass
서브클래싱
부모로 부터 성격을 상속받고 자신 고유의 특성도 추가할 수 있음
class SomeSubclass: SomeSuperclass {
// subclass definition goes here
}
서브클래싱은 계속할 수 있음
오버라이딩 (Overriding)
- 서브클래스에서 부모클래스에서 상속받은 것을 재정의
- 인스턴스, 메소드, 타입 메소드, 인스턴스 프로퍼티, 타입 프로퍼티, 서브스크립트 모두 가능
- 다른 선언 앞에 override키워드 붙여 사용
부모클래스의 메소드, 프로퍼티, 서브스크립트의 접근
super키워드와 점문법 혹은 인덱스 구문으로 부모 클래스의 메소드, 프로퍼티, 서브스크립트에 접근
ex) super.someMethod, super.someProperty, super[someIndex]
메소드 오버라이드
메소드 선언 앞에 override 키워드 사용
프로퍼티 오버라이드
- 서브클래스에서는 상속받은 저장된 프로퍼티, 계산된 프로퍼티 모두 오버라이드 가능
- (오버라이드 시, 프로퍼티 이름과 타입 명시
- 서브클래스에서는 단순히 상속받은 특정 형의 프로퍼티가 있다는 정도만 알고 있기 때문에 상속받은 읽기전용 프로퍼티더라도 getter/setter를 정의해서 읽고/쓰기가 가능한 프로퍼티로 변경해서 제공 가능
프로퍼티 옵저버 오버라이드
이미 부모클래스에 선언된 프로퍼티 옵저버도 서브클래스에 재정의해 사용 가능
💡
- 상수 프로퍼티와 읽기전용 프로퍼티에는 옵저버를 붙일 수 없음
- 정의 그대로 set을 할 수 없는 프로퍼티이기 때문
- 같은 프로퍼티에 옵저버를 추가하고 setter를 추가해 둘을 동시에 사용할 수 없음
- 이미 setter를 설정했다면 옵저버를 붙인 것과 같은 동작을 하기 때문
오버라이드 방지
- 서브클래스에서 특정 메소드, 프로퍼티, 서브스크립트가 오버라이드 되는 것을 방지하기 위해 final키워드를 사용
- final로 선언되면 override되는 것을 막을 수 있음.
- final func, final class func, final subscript
- 만일 final로 선언된 메소드, 프로퍼티, 서브스크립트를 오버라이드 하려고 하면 컴파일 시간에 에러가 발생
- 클래스 전체를 final로 선언해서 클래스 안의 모든 메소드, 프로퍼티 등이 override가 되는 것 방지 가능
- final class
반응형
'⌨️ Language > swift' 카테고리의 다른 글
[Swift] 옵셔널 체이닝 (0) | 2024.03.26 |
---|---|
[Swift] 초기화 (1) | 2024.03.25 |
[Swift] 서브스크립트 (0) | 2024.03.22 |
[Swift] 메서드 (0) | 2024.03.21 |
[Swift] 프로퍼티 (0) | 2024.03.20 |
댓글