์๋ ํ์ญ๋๊น, ๋ฏผํธ์ ๋๋ค. ๐
super.init()์ ๋ํด์ ์ด๊ฒ์ ๊ฒ ์ฐพ์๋ณด๋ค ์ ๊ธฐํ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์์ต๋๋ค.
class A {
init(some: String) {
print("a")
}
}
A์ ๊ฐ์ด ๋งค๊ฐ๋ณ์๊ฐ ์๋ init์ ๊ฒฝ์ฐ์๋, ์์์ ํด์ ๋ด๋ถ์ ๋ณํ๋ฅผ ์ค ๋
class B: A {
override init(some: String) {
super.init(some: some)
print("b")
}
}
๋ฐ๋์ super.init์ ๋ถ๋ฌ์ผ ํ๋ค๋ ์๋ฌ ๋ฉ์ธ์ง๊ฐ ๋ด์ต๋๋ค.
2๋จ๊ณ ์ด๊ธฐํ์์ ๋ณด๋ฉด, customize๋ ์ด๊ธฐํ๋
1. superClass์ subclass๊ฐ ์์ ๋ subClass ์ด๊ธฐํ
2. superClass ์ด๊ธฐํ ์์ผ๋ก ์ฌ๋ผ๊ฐ ํ
3. superClass์์๋ถํฐ ๊ฐ์ด ํ ๋น
๋๋ ๊ณผ์ ์ ๊ฑฐ์นฉ๋๋ค. ์ด์ฒ๋ผ override๋ฅผ ํ๋ ๊ฒฝ์ฐ ๋ถ๋ชจ ํด๋์ค์ init()์ด ์๋์ผ๋ก ๋ถ๋ฆฌ์ง ์๊ธฐ ๋๋ฌธ์ ๋ถ๋ฌ์ฃผ์ด์ผ ํฉ๋๋ค.
๊ทธ.๋ฐ.๋ฐ!
class C {
init() {
print("c")
}
}
๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ! ์ด์ํ ์ผ์ด ์ผ์ด๋ฉ๋๋ค.
class D: C {
override init() {
print("d")
}
}
?? ์ ์๋ฌ ๋ฉ์ธ์ง๊ฐ ๋์ง ์์ฃ ?
์ Build Success๊ฐ ๋จ์ฃ ??
์ด์ํ๋ค.. ๋ถ๋ช override์ธ๋ฐ?
๊ทธ๋์ ์๊ฐํ ๊ฐ์ค!
Swift๋ ์๋์ผ๋ก ๋ง์ง๋ง์ super.init()์ ๋ถ๋ฌ์ค๋๋ค. ๊ทธ๋ฌ๋ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ค init()์ ๋ถ๋ฌ์ผ ํ ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ super.init()์ ๋ถ๋ฌ์ ํ์ธํด์ฃผ์ด์ผ ํฉ๋๋ค.
์ฐธ๊ณ ๋ก ์ด๋ค ์์๋ก ๋ถ๋ฅด๋์ง๋ ๋ค์ ์ด๋ฏธ์ง์ ๊ฐ์ต๋๋ค.
'๐ iOS > ๐ถ ๊ถ๊ธ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] ARC_๊ฐ์ฒด ์๋ช , weak์ unowned ์ฐจ์ด (0) | 2024.03.21 |
---|---|
[iOS] Swift์ ์ปดํ์ผ๋ฌ _ LLVM (1) | 2024.03.12 |
[NSCache&URLCache]์ ์ด๋ฏธ์ง ํ์ผ์ด URLCache์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ ๋์คํฌ์ ์ ์ฅ๋ ๊น? (0) | 2024.01.28 |
[UIKit]loadView์ view๋ ์ธ์ ํ ๋น๋ ๊น? (0) | 2024.01.27 |