티스토리 뷰
static 메소드
class 메소드
final class 메소드
이 셋의 차이가 뭘까?
사실 찾아보니 그리 헷갈리는 개념은 아니지만 개념 정리 겸 포스팅한다.
우선 셋 다 타입 메소드이다.
static 메소드, 타입 메소드이고 자식클래스에서 override 할 수 없다.
class 메소드, 타입 메소드이고 자식클래스에서 override 할 수 있다.
final class 메소드, 타입 메소드이고 자식클래스에서 override 할 수 없다.
이렇게만 보면 static이랑 final class랑 똑같은거 아닌가 싶다. 이 글을 포스팅하게 된 이유이기도 하다.
야곰님의 강의를 듣다가 이 둘이 동일한 기능을 한다는 말을 하셨다. 물론 맞는말이기도 하다. 당장은 일단 넘어가느라 이렇게 설명하신 것 같다.
(프로그래밍 언어 강의나 책을 읽다보면 초반에 기초 내용을 다루던 중에 후반에 다뤄야 할 내용이 나오면 일단 넘어가겠다 라며 넘어가는 경우가 많았던 것 같다.)
궁금증이 생겨서 찾아보니
https://stackoverflow.com/questions/29636633/static-vs-class-functions-variables-in-swift-classes
final class 는 부모클래스의 어떤 class 메소드를 override final func method() 이런 식으로 override 할 수 있지만 그 이후의 자식 클래스는 더 이상 그 메소드를 override 할 수 없게 되는것..
class Test1 {
static func method() {
}
}
class TestForTest1: Test1 {
override static func method() { // 불가!!!!
}
}
class Test2 {
class func method() {
}
}
class TestForTest2: Test2 {
override class func method() { // 가능!!!
}
}
class TestForTestForTest2: TestForTest2 {
final override class func method() { // 가능!!
}
}
class TestForTestForTestForTest2: TestForTestForTest2: {
override class func method() { // 불가!!!!!
}
}
대충 이런 식으로 예제를 만들어봤다. (티스토리 코드블럭으로 막 작성한거라 오타가 있는지는 모르겠다.)
보다시피 final class 는 부모 클래스의 class 메소드를 override 할 수 있지만 그 이후는 상속할 수 없게 막아버린다.
final,, 의미가 확 들어온다.
나 까지가 찐막! 이제 그만! final! 이런 느낌,,
'iOS' 카테고리의 다른 글
[번역] WatchKit (0) | 2022.01.20 |
---|---|
iOS status bar style 변경하기 (1) | 2021.11.18 |
Bastard Injection (0) | 2021.08.17 |
iOS TextField memory leak (0) | 2021.07.16 |
iOS App Life Cycle (2) | 2021.07.11 |
- Total
- Today
- Yesterday
- 읏샷샤 화이팅 앗샷샤 화이팅
- watchKit
- 클론코딩
- ios
- iPadOS
- lldb
- split view controller
- 생활코딩
- iPad
- 냉철
- iOS App Life Cycle
- strings.xml
- Localizable
- 스토아학파
- 에피큐어
- watchOS life cycle
- private repository
- 철학의 역사
- StatusBar
- watchOS
- Android
- UISplitViewController
- spm
- 에피쿠로스
- SplitViewController
- bitbucket
- statusBarStyle
- Xcode
- opentutorial
- 프론트엔드 공부
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |