๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS/๐Ÿ˜ถ ๊ถ๊ธˆ์ฆ

[Swift]super.init()์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ–ˆ๋˜ ๊ฒฝ์šฐ

by MINT09 2023. 11. 8.

์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ, ๋ฏผํŠธ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜ˆ 

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()์„ ๋ถˆ๋Ÿฌ์„œ ํ™•์ธํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ฐธ๊ณ ๋กœ ์–ด๋–ค ์ˆœ์„œ๋กœ ๋ถ€๋ฅด๋Š”์ง€๋Š” ๋‹ค์Œ ์ด๋ฏธ์ง€์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.