์ค์ํํธ์์ ํจ์์ ์ข
๋ฅ
์ค์ํํธ์์ ํจ์๋ ํฌ๊ฒ ๋๊ฐ์ง๋ก ๋๋๋ค. ์ธ์คํด์ค ๋ฉ์๋์ ํ์
๋ฉ์๋์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํ์
๋ฉ์๋๋ ๋ค์ static method
, class method
๋ก ๋๋๋ค.
- Instance Method
- Type Method
- Static Method
- Class Method
๋ชจ์์ ๋ณด๋ ๋ณ๋ค๋ฅธ ํค์๋ ์์ด ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋๊ฒ์ ์ธ์คํด์ค ๋ฉ์๋๋ผ๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ class
๋๋ static
ํค์๋๋ฅผ ํตํด ์ ์๋ ํจ์๋ฅผ ํ์
๋ฉ์๋๋ผ๊ณ ํ๋ค.
3๊ฐ์ง ์ข
๋ฅ์ ํจ์์ ์ฐจ์ด์ ์ ์์๋ณด์.
์ธ์คํด์ค ๋ฉ์๋ (Instance Method)
ํน์ ํ์
์ ์ธ์คํด์ค(ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ...) ์ ์ํ ํจ์๋ฅผ ๋งํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ณดํต ํด๋น ์ธ์คํด์ค์ ๊ด๋ จํ ๋์์ ์ํํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋น์ฐํ ์ธ์คํด์ค๋ฅผ ์์ฑํด์ผ ํด๋น ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค. .
์ ํตํด ์ ๊ทผํ์ฌ ์ฌ์ฉํ๋ฉด๋๋ค.
ํ์
๋ฉ์๋ (Type Method)
ํ์
๋ฉ์๋๋ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์๊ณ ํ์
๋ฉ์๋ ์์ฒด์์ ๋ฐ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
Example.classMethod()
๊ทธ๋ฆฌ๊ณ ๋ ํ๊ฐ์ง ์ค์ํ์ ์ ํ์
๋ฉ์๋ ๋ด๋ถ์์ self
๋ ํ์
๊ทธ ์์ฒด๋ฅผ ๊ฐ๋ฆฌํจ๋ค. (์ธ์คํด์ค ๋ฉ์๋๋ ์ธ์คํด์ค๋ฅผ ๊ฐ๋ฆฌํด)
๊ทธ๋ผ static ๋ฉ์๋์ static๋ฉ์๋์ ์ฐจ์ด๋ ๋ญ๊น?
class
๋ฉ์๋: override
๊ฐ๋ฅํ๋ค.
static
๋ฉ์๋: override
๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
์ด๋ฌํ ์ฐจ์ด์์ ๋์ค๋ ์ฐจ์ด๊ฐ ํ๊ฐ์ง ๋ ์๋ค. ์์์ด ๋ถ๊ฐ๋ฅํ struct๋ enum์์ class func
๋ฅผ ์ ์ํ๋ฉด ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. (ํค์๋ ์ด๋ฆ์ฒ๋ผ class์์๋ง ์ฌ์ฉ๋๋ค)
๊ทธ๋ผ ํ์
๋ฉ์๋๋ ์ธ์ ์ฐ๋ฉด ์ข์๊น?
static
ํค์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํด๋น ํ๋กํผํฐ๋ ๋ฉ์๋๊ฐ ํ์
์์ฒด์ ์ฐ๊ด๋ ๋ ์ฌ์ฉํ๋ฉด ๋๋ค. ๋ค์ ์ฝ๊ฒ ๋งํ๋ฉด, ์ ์ผํ ๊ฐ์ ๊ฐ์ ธ์ผ ํ ๋ ์ฌ์ฉ๋๋ค. (์ฑ๊ธํค ํจํด์์๋ static ์ ์ฌ์ฉํ๋ค.)
์๋ฅผ๋ค์ด "๋ณผ๋ฅจ" ์ ๋ด๋นํ๋ ํด๋์ค์ "์ํ ์ฌ์", "์์
์ฌ์"์ ๋ด๋นํ๋ ํด๋์ค๊ฐ ์๋ค. ๋ณผ๋ฅจ์ ์์คํ
์์ ์ ์ผํ ๊ฐ์ด์ด์ผ ํ๋ฉฐ, ์ํ ์ฌ์๊ณผ ์์
์ฌ์์ ์ค๊ณ ๊ฐ๋๋ผ๋ ๊ฐ์ด ๋ฐ๋๋ฉด ์๋๋ค. ์ด๋ ๋ณผ๋ฅจ์ static
ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ง์๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋น ๋ณผ๋ฅจ์ ์กฐ์ ํ๋ ๋์์ static func mute(){}
๋ฑ์ผ๋ก static
ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
โ (+ ์ด ์์ค์ ์์์ด ํ์ํ๋ค๋ฉด class
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๊ฒ ์ง)