[Kotlin] object ํค์๋
์ ๋ฐ์ดํธ:
๐ฎ ์ฝํ๋ฆฐ object ํค์๋ ๐
์ญ์๋ ํผ์์ ๊ณต๋ถํ ๋๋ ์ง๋
์ค๋ฝ๊ฒ ์ง๋๊ฐ ์๋๊ฐ๋๋ ํ์ฌ์์ ์ ๊ท ํ๋ก์ ํธ๋ฅผ ์ฝํ๋ฆฐ์ผ๋ก ๊ฐ๋ฐํ๊ฒ ๋๋ฉด์ ๋ฐ๋ฑ์ ๋ถ ๋จ์ด์ ธ ์ฝํ๋ฆฐ ๊ณต๋ถ์ค์ด๋ค. ๐
์ฌ์ค ๊ณต๋ถ๋ณด๋ค๋ ์ค๋ฌด์์ ๋น์ฅ ์ฌ์ฉํด์ผ ๋ผ์ ์ผ๊ณผ ๋์์ ๋ชจ๋ฅด๋ ์ฌํญ ์์นํ๋ฉด์ ์
๋ฌด ์คโฆ(๊ฑฐ์ ๋ค ๋ชจ๋ฅด๋๊ฒ ํจ์ ) ์ฝํ๋ฆฐ ๊ธฐ์ด๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ ํฌ์คํ
ํ๋ ค ํ์ผ๋ ๋น์ฅ ์ฌ์ฉํ๋ฉด์ ๋ชจ๋ฅด๋ ๋ด์ฉ๋ค์ ํฌ์คํ
ํ๋ ๊ฒ์ผ๋ก ๋ฐฉํฅ์ ๋ฐ๊ฟจ๋ค.
ย
์ฝํ๋ฆฐ์์๋ object ํค์๋๋ฅผ ๋ค์ํ ์ํฉ์์ ์ฌ์ฉํ์ง๋ง ๋ชจ๋ ๊ฒฝ์ฐ ํด๋์ค๋ฅผ ์ ์ํ๋ฉด์ ๋์์ ์ธ์คํด์ค(๊ฐ์ฒด)๋ฅผ ์์ฑํ๋ค๋ ๊ณตํต์ ์ด ์๋ค. ๋ค์์ object ํค์๋๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋ฌ ์ํฉ์ด๋ค.
ย
๐น ๊ฐ์ฒด ์ ์ธ, ์ฑ๊ธํด ์ ์
- ์๋ฐ์์ ์ธ์คํด์ค๊ฐ ํ๋๋ง ํ์ํ ํด๋์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์ ์ (static) ํ๋์ ํด๋์ค์ ์ ์ผํ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ ์ฑ๊ธํด ํจํด์ ์ฌ์ฉํ๋ค.
- ์ฝํ๋ฆฐ์ ๊ฐ์ฒด ์ ์ธ ๊ธฐ๋ฅ์ ํตํด ์ฑ๊ธํด์ ์ธ์ด์์ ๊ธฐ๋ณธ์ผ๋ก ์ง์ํ๋ค.
- ์ฑ๊ธํด ์ ์ธ์ object ํค์๋๋ก ์์ํ๋ฉด ๋๊ณ , ์์ฑ์ ํธ์ถ ์์ด ์ฆ์ ๋ง๋ค์ด์ง๋ค.
object DataSample {}
// kotlin์์ ์ฌ์ฉ
val dataSample = DataSample
// java์์ ์ฌ์ฉ
DataSample dataSample = DataSample.INSTANCE;
ย
๐น ๋๋ฐ ๊ฐ์ฒด, static ๋ฉค๋ฒ ์ ์ธ
- ์ฝํ๋ฆฐ ํด๋์ค ์์๋ ์ ์ ์ธ ๋ฉค๋ฒ๊ฐ ์๋ค. ์๋ฐ static ํค์๋๋ฅผ ์ง์ํ์ง ์๋๋ค.
- ๋์ ํด๋์ค ๋ฐ๊นฅ์ ์ ์ธํ๋ ์ต์์ ํจ์์ ๊ฐ์ฒด ์ ์ธ์ ํ์ฉํ๋ค.
- ์ต์์ ํจ์๋ private ๋น๊ณต๊ฐ ๋ฉค๋ฒ์ ์ ๊ทผํ ์ ์๋ค.
- ํด๋์ค ์์ companion object ์ ์ํ๋ฉด, ๊ทธ ํด๋์ค์ ํ๋กํผํฐ๋ ๋ฉ์๋์ ์ ๊ทผํ ์ ์๋ค.
ย
๐น companion object ์ฌ์ฉ
- ๋๋ฐ ๊ฐ์ฒด์ ์ด๋ฆ ๋ถ์ผ ์ ์๋ค. (์ง์ ํ์ง ์์ผ๋ฉด ์๋์ผ๋ก Companion)
- ์ธํฐํ์ด์ค ๊ตฌํ
- ํ์ฅ ํจ์์ ํ๋กํผํฐ ์ ์
- ํฉํ ๋ฆฌ ๋ฉ์๋ ๊ตฌํ
ย
๐น ์ต๋ช ํด๋์ค ๊ตฌํ
- ๋ฌด๋ช ๊ฐ์ฒด(anonymous object) ์ ์ํ ๋ ์ฌ์ฉ
- ์๋ฐ์ ๋ฌ๋ฆฌ final์ด ์๋ ๋ณ์๋ ๊ฐ์ฒด ์ ์์ฃ์ ์ฌ์ฉ ๊ฐ๋ฅ
ย
companion object์ ์ฐ์์ ๋์ค์ ๋ ์์๋ด์ผ ํ ๊ฒ ๊ฐ๋ค. object ํค์๋๋ ์ฌ๊ธฐ๊น์ง.
ย
ย
[์ฐธ๊ณ ]
https://0391kjy.tistory.com/29
Kotlin in action