Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Background
- 직장인인강
- 기본문법
- 문자열 보간법
- 열거형
- 인스펙터
- beginAsyncWrite
- switch
- ios
- cancelAsyncWrite
- 독학
- 프로퍼티 관찰자
- Realm
- 패스트캠퍼스
- Optional Chaining
- 함수
- SeSAC
- xcode
- 옵셔널 체이닝
- enum
- Threading
- RawValue
- Git
- 직장인자기계발
- swift
- 30개프로젝트로배우는iOS앱개발withSwift초격자패키지Online
- 패스트캠퍼스후기
- TableView
- userDefaults
- 패캠챌린지
Archives
- Today
- Total
아삭아삭 iOS 개발
[Swift 독학] 패스트캠퍼스 챌린지 25일차_상속 본문
■ 상속 (Inheritance)
- 클래스는 다른 클래스로부터 메서드, 프로퍼티 또는 다른 특성들을 상속받을 수 있음
→ 클래스/프로토콜 등에서는 가능, 열거형/구조체는 상속 불가
→ 스위프트에서는 단일상속만 지원, 다중상속은 지원하지 않음 - 슈퍼 클래스 (=superclass, 부모 클래스)
: 한 클래스가 다른 클래스를 상속할 때, 상속하는 클래스 - 서브 클래스 (=subclass, 자식 클래스)
: 한 클래스가 다른 클래스를 상속할 때, 상속받는 클래스
class 클래스 이름: 부모 클래스 이름 {
/ 구현부 /
}
■ 스위프트에서의 상속 클래스 특징
- 부모 클래스로부터 물려받은 메서드, 프로퍼티, 서브스크립트를 호출하거나 접근할 수 있음
- 물려받은 메서드, 프로퍼티, 서브스크립트 등을 오버라이딩을 통해 자신만의 내용으로 재정의(=수정) 가능
- 상속받은 프로퍼티의 값이 변경되었을때 알려주기 위해 상속된 프로퍼티에 프로퍼티 관찰자도 추가 가능
※ 부모 프로퍼티가 연산 프로퍼티로 정의되었든, 저장 프로퍼티로 정의되었든지와 무관하게 자식 클래스에서 프로퍼티 감시자 구현 가능 - 베이스 클래스 (base class, 기본 클래스)
: 다른 클래스에서 상속받지 않은 클래스 - 하위 클래스 (subclassing)
: 다른 클래스에서 상속받는 클래스
: 하위 클래스는 기존 클래스의 특성을 수정할 수 있음
: 하위 클래스에 새로운 특성을 추가할 수 있음
// 베이스 클래스 Music 정의해줌
class Music {
var beat = 0.0
var description: String {
return "dancing \(beat) rhythm in the moonlight"
}
func singing() {
// do nothing
}
}
let someMusic = Music() // 인스턴스 생성
print("Music: \(someMusic.description)")
// Music: dancing 0.0 ryhthm in the moonlight
// 자식 클래스 EDM는 부모클래스 Music를 상속받음
// 또한 부모 클래스와는 별개로 hasbounce 이라는 새로운 저장된 프로퍼티를 정의해줌. 빠운스!
class EDM: Music {
var hasBounce = true
}
let edm = EDM()
edm.hasBounce = false
// EDM인스턴스의 상속된 beat 프로퍼티를 0.0에서 12.0으로 수정해줌
edm.beat = 120.0
print("EDM: \(edm.description)")
// EDM: dancing 120.0 rhythm in the moonlight
class Boom: EDM {
var soundOfMusic = 1
}
let boom = Boom()
boom.hasBounce = true
boom.soundOfMusic = 3
boom.beat = 55.0
print("Boom: \(boom.description)")
// Boom: dancing 55.0 rhythm in the moonlight 💃🕺
본 게시물은 개인 공부 기록용이므로 내용에 오류가 있을 수 있습니다.
■ fast campus강의 외 참조자료
[1] https://bbiguduk.gitbook.io/swift/language-guide-1/inheritance
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'Swift' 카테고리의 다른 글
[Swift 독학] 패스트캠퍼스 챌린지 27일차_타입캐스팅 (0) | 2022.02.19 |
---|---|
[Swift 독학] 패스트캠퍼스 챌린지 26일차_오버라이딩 (0) | 2022.02.18 |
[Swift 독학] 패스트캠퍼스 챌린지 24일차_프로퍼티 래퍼 (0) | 2022.02.16 |
[Swift 독학] 패스트캠퍼스 챌린지 23일차_프로퍼티 관찰자 (0) | 2022.02.15 |
[Swift 독학] 패스트캠퍼스 챌린지 22일차_프로퍼티_연산, 타입 프로퍼티 (0) | 2022.02.14 |