티스토리 뷰
부모클래스(SuperClass)로부터 받은 메서드를 호출할 수 있고 프로퍼티에 접근할 수 있고 서브스크립트도 사용가능
자식클래스(SubClass)에서 부모클래스의 요소들을 재정의하는 것을 명확히 해야함
상속받은 프로퍼티의 값이 변경되었을 때 알려주는 프로퍼티 감시자 구현 가능
상속받지 않은 클래스 = 기반클래스(BaseClass)
상속 형태
class 클래스명: superclass {
//프로퍼티와 메서드
}
똑같은 기능을 구현하기 위해 다시 작성할 필요가 없어 재사용하기 용이함
기능확장이 편리함
재정의
override
그대로 사용하지 않고 자식클래스에서 변경해서 사용
재정의 했는데 부모의 것을 그대로 사용하고 싶으면 앞에 super 키워드
super.someMethod(), super.someProperty
class Super {
func sayHello() {
print("Hi Super")
}
}
class Sub: Super {
override func sayHello() {
super.sayHello()
print("Hi Sub")
}
}
let superClass = Super()
superClass.sayHello()
print("-------------")
let subClass = Sub()
subClass.sayHello()
//Hi Super
//-------------
//Hi Super
//Hi Sub
프로퍼티 재정의
저장 프로퍼티로 재정의할 수 없음
프로퍼티의 접근자, 설정자, 프로퍼티 감시자 등을 재정의하는 것
class Super {
var num: Int = 2
var multiple: Int {
return self.num*2
}
func printNum() {
print("Super \(multiple)")
}
}
class Sub: Super {
override var multiple: Int {
return num*3
}
override func printNum() {
super.printNum()
print("Sub \(multiple)")
}
}
let superClass = Super()
superClass.printNum()
print("-------------")
let subClass = Sub()
subClass.printNum()
//Super 4
//-------------
//Super 6
//Sub 6
재정의 방지
final 키워드 사용 하면 재정의할 수 없음 (예 : final func)
final class는 상속하거나 재정의할 수 없음
참고 도서
m.yes24.com/Goods/Detail/78907450
'Swift' 카테고리의 다른 글
[Swift] Understanding Swift Performance - sturct와 class (0) | 2021.05.06 |
---|---|
[Swift] static 타입 프로퍼티, 타입 메서드 (0) | 2021.05.06 |
[Swift] 접근제어 (0) | 2021.05.01 |
[Swift] 구조체와 클래스 Struct and Class (0) | 2021.05.01 |
[Swift] Swift 언어의 특징 (0) | 2021.05.01 |
댓글
공지사항