반응형
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 | 31 |
Tags
- weak
- 원격 푸시
- ios
- 진입점
- userdefaults
- SWiFT
- UIButton
- 동시성프로그래밍
- CoreLocation
- DispatchQueue
- Understanding Swift Performance
- Remot Push
- entrypoint
- WWDC16
- TableView
- firebase
- 트레일링 클로저
- IBOutlet
- AppTransportSecurity
- OperationQueue
- RunLoop
- property wrapper
- IBOutletCollection
- 후행 클로저
- viewcontroller
- for-in
- 연산 프로퍼티
- Choosing Between Structures and Classes
- tableViewCell
- uikit
Archives
- Today
- Total
iOS 공부하는 감자
Day10) 클래스와 상속 본문
반응형
상속
- 상속은 클래스에서만 사용이 가능하다.
- 단일 상속만 허용한다. (다중 상속 불가)
- Super Class(부모 클래스) : 상속하는 클래스
- Sub Class (자식 클래스) : 상속받는 클래스
- 클래스는 부모 클래스로부터 물려받은 프로퍼티, 메서드에 접근할 수 있고, 새롭게 재정의도 가능하다.
- 연산 프로퍼티를 정의한 클래스에서는 연산 프로퍼티에 프로퍼티 감시자를 구현할 수 없지만, 자식 클래스에서는 부모 클래스에서 정의한 연산, 저장 프로퍼티에 프로퍼티 감시자를 구현할 수 있다.
기반 클래스(Base Class)
- 아무 클래스도 상속받지 않는 클래스
-
class Person { let name: String? var age: Int? }
서브 클래싱(subclassing)
- 기반 클래스를 통해 새로운 클래스를 만드는 작업을 말한다.
- 자식 클래스를 정의할 때 이름 옆에 콜론(:)을 쓰고 상속받을 부모 클래스의 이름을 작성한다.
-
class Person { let name: String var age: Int init (name: String, age: Int) { self.name = name self.age = age } } class Student: Person { let studentNumber: Int = 2017112233 var grade: Double = 4.0 }
- 위 코드처럼 Student 클래스가 Person 클래스를 상속받는 것을 서브 클래싱(subclassing)이라고 한다.
final 키워드로 상속을 금지
- 현재 작성하는 클래스를 아무도 상속받을 수 없도록 하고 싶다면 클래스 앞에 final 키워드를 붙여준다.
- final 키워드를 프로퍼티나 메서드에 추가하여 재정의(오버 라이딩)를 금지할 수도 있다.
- 더 이상 상속하지 않을 클래스의 경우 final 키워드를 작성해주면 빌드 속도가 향상된다고 한다.
-
final class Person { let name: String var age: Int init (name: String, age: Int) { self.name = name self.age = age } } // 오류 class Student: Person { // Inheritance from a final class 'Person' let studentNumber: Int = 2017112233 var grade: Double = 4.0 }
상속을 사용할 때 장단점
- 장점 : 중복되는 코드를 줄일 수 있다.
- 단점 : 상속을 너무 많이 사용하면 상속의 깊이가 깊어져서 관리가 어려워진다.
상속의 규칙
- 자식 클래스는 하나의 부모 클래스만 상속받을 수 있다.
- 부모 클래스는 여러 자식 클래스를 가질 수 있다.
- 상속의 깊이에 제한은 없다.
상속을 사용하면 좋은 경우
- 단일 책임 : 하나의 클래스는 하나의 역할을 수행해야 좋다. / 너무 많은 기능을 수행하면 관리가 어렵다.
- Type이 분명해야 할 때 : 클래스 간의 명확한 구분이 필요할 때
- 자식 클래스가 여러 개 필요할 때 : 기본 동작을 바탕으로 다양하게 구현되어야 하는 경우
- 확장성이 필요할 때 : ex) 학생 클래스를 상속받아서 운동부, 미술부 등 내용에 확장이 필요할 때
- 정체성을 구분하고 싶을 때
알고리즘
https://co-dong.tistory.com/18
반응형
'22 베이직 챌린지' 카테고리의 다른 글
Day12) 옵셔널 (0) | 2022.01.14 |
---|---|
Day11) 프로토콜, 익스텐션 (0) | 2022.01.13 |
Day9) 메서드, 접근제한자, Static (1) | 2022.01.11 |
Day8) 프로퍼티, 연산 프로퍼티 (0) | 2022.01.10 |
Day7) 클래스와 구조체 (0) | 2022.01.09 |