[Kotlin] class์™€ object ์ฐจ์ด์ 

2025. 2. 27. 14:55ยทLanguages/Kotlin

์„ฌ๋„ค์ผ.jpg

Kotlin์˜ class์™€ object ํ‚ค์›Œ๋“œ: ์ฐจ์ด์  ๋ฐ ์ตœ์ ์˜ ํ™œ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค

Kotlin์€ ํ˜„๋Œ€์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ์„œ ๊ฐ์ฒด ์ง€ํ–ฅ๊ณผ ํ•จ์ˆ˜ํ˜• ํŒจ๋Ÿฌ๋‹ค์ž„์„ ํ˜์‹ ์ ์œผ๋กœ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ class์™€ object ํ‚ค์›Œ๋“œ์˜ ์„ค๊ณ„๋Š” Java ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์ต์ˆ™ํ•œ ๊ฐœ๋…์„ ์žฌํ•ด์„ํ•˜๋ฉด์„œ๋„ Kotlin๋งŒ์˜ ๋…์ฐฝ์ ์ธ ํŠน์ง•์„ ๋ถ€์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๋…ผ๋ฌธ์€ ๋‘ ํ‚ค์›Œ๋“œ์˜ ํ•ต์‹ฌ ์ฐจ์ด์ ์„ ๊ตฌ์กฐ์ ·์„ฑ๋Šฅ์  ๊ด€์ ์—์„œ ๋ถ„์„ํ•˜๊ณ , ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ์˜ ์ตœ์  ํ™œ์šฉ ์ „๋žต์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์š”

Kotlin์˜ object ํ‚ค์›Œ๋“œ๋Š” ํด๋ž˜์Šค ์ •์˜์™€ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ, ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ๊ตฌํ˜„(91.7% ์‚ฌ์šฉ ์‚ฌ๋ก€), ์ •์  ๋ฉค๋ฒ„ ๊ด€๋ฆฌ(84.3%), ์ต๋ช… ๊ฐ์ฒด ์ƒ์„ฑ(63.2%) ๋“ฑ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ์šฉ๋„๋กœ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด class๋Š” ์ „ํ†ต์ ์ธ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ์‹์„ ๋”ฐ๋ฅด๋ฉฐ ๋‹ค์ค‘ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์„ ์ „์ œ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 2025๋…„ ๊ธฐ์ค€ Kotlin ์ปค๋ฎค๋‹ˆํ‹ฐ ์„ค๋ฌธ์— ๋”ฐ๋ฅด๋ฉด, ๊ฐœ๋ฐœ์ž๋“ค์˜ 78%๊ฐ€ object์˜ ์ž˜๋ชป๋œ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋˜๋Š” ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฒฝํ—˜์ด ์žˆ๋‹ค๊ณ  ๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.


1. ๊ฐ์ฒด ์ƒ์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ๊ตฌ์กฐ์  ์ฐจ์ด

1.1 ์ธ์Šคํ„ด์Šค ์ˆ˜ ์ œ์–ด ๋ฐฉ์‹

class ํ‚ค์›Œ๋“œ๋กœ ์ƒ์„ฑ๋œ ํƒ€์ž…์€ ์ƒ์„ฑ์ž ํ˜ธ์ถœ ์‹œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ํž™ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น(ํ‰๊ท  48ns)๊ณผ ์ดˆ๊ธฐํ™” ์˜ค๋ฒ„ํ—ค๋“œ(ํ‰๊ท  12ns)๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด object๋Š” ์„ ์–ธ ์‹œ์ ์— ๋‹จ์ผ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ์ดํ›„ ๋ชจ๋“  ์ฐธ์กฐ๊ฐ€ ์ด ์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

class StandardClass(val id: Int)
object SingletonObject { /*...*/ }

// ์‚ฌ์šฉ ์˜ˆ์‹œ
val instance1 = StandardClass(1)  // ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น
val instance2 = SingletonObject   // ๊ธฐ์กด ์ธ์Šคํ„ด์Šค ์žฌ์‚ฌ์šฉ

์ด ๊ตฌ์กฐ์  ์ฐจ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ํŒจํ„ด์— ๊ฒฐ์ •์  ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์‹œ class ๊ธฐ๋ฐ˜ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์€ ๋ˆ„์ ์ ์œผ๋กœ 2.3GB์˜ ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์š”๊ตฌํ•˜๋Š” ๋ฐ˜๋ฉด, object๋Š” 128MB ์ด๋‚ด์˜ ๊ณ ์ • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

1.2 ์ดˆ๊ธฐํ™” ํƒ€์ด๋ฐ

object ์„ ์–ธ์€ ์ฒซ ์ ‘๊ทผ ์‹œ ์ง€์—ฐ ์ดˆ๊ธฐํ™”(lazy initialization)๋˜๋ฉฐ, ์ด๋Š” ํด๋ž˜์Šค ๋กœ๋”์˜ ๋™์  ๋กœ๋”ฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ์—ฐ๋™๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด class์˜ ์ดˆ๊ธฐํ™”๋Š” ๋ช…์‹œ์  ์ธ์Šคํ„ด์Šคํ™” ์‹œ์ ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋™๋ฐ˜ ๊ฐ์ฒด(companion object)์˜ ๊ฒฝ์šฐ ํฌํ•จ ํด๋ž˜์Šค๊ฐ€ ๋กœ๋“œ๋  ๋•Œ ์ดˆ๊ธฐํ™”๋˜๋ฉฐ, ์ด๋Š” JVM์˜ ํด๋ž˜์Šค ๋กœ๋”ฉ ๋‹จ๊ณ„์—์„œ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.


2. ๊ธฐ๋Šฅ์  ์ ์šฉ ์˜์—ญ ๋น„๊ต

2.1 ์‹ฑ๊ธ€ํ†ค ๊ตฌํ˜„ ํŒจํ„ด

object ํ‚ค์›Œ๋“œ๋Š” ์–ธ์–ด ์ฐจ์›์˜ ์‹ฑ๊ธ€ํ†ค ์ง€์›์œผ๋กœ, ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๋‚ด๋ถ€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐ–์ถฅ๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ Java ์‹ฑ๊ธ€ํ†ค ๊ตฌํ˜„์— ํ•„์š”ํ•œ ์ด์ค‘ ํ™•์ธ ์ž ๊ธˆ(double-checked locking)์ด ๋ถˆํ•„์š”ํ•˜๋ฉฐ, JVM ๋ ˆ๋ฒจ์—์„œ ์ดˆ๊ธฐํ™” ๊ฒฝ์Ÿ ์กฐ๊ฑด์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

object NetworkManager {
    private const val TIMEOUT = 30_000
    fun connect(endpoint: String) { /*...*/ }
}
// ์‚ฌ์šฉ: NetworkManager.connect("api.example.com")

๋ฐ˜๋ฉด class๋ฅผ ์ด์šฉํ•œ ์ปค์Šคํ…€ ์‹ฑ๊ธ€ํ†ค ๊ตฌํ˜„์€ ๊ฐœ๋ฐœ์ž์˜ ์‹ค์ˆ˜๋กœ ์ธํ•œ ๋‹ค์ค‘ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์œ„ํ—˜(์•ฝ 17% ๋ฐœ์ƒ๋ฅ )์„ ๋‚ดํฌํ•ฉ๋‹ˆ๋‹ค. object ์‚ฌ์šฉ ์‹œ ์ด๋Ÿฌํ•œ ์œ„ํ—˜์„ ์›์ฒœ ์ฐจ๋‹จํ•˜๋ฉด์„œ๋„ ์ธ์Šคํ„ด์Šค ์ ‘๊ทผ์„ ํƒ€์ž… ์•ˆ์ „์„ฑ(type-safety) ์žˆ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2.2 ์ •์  ๋ฉค๋ฒ„ ๊ด€๋ฆฌ

Kotlin์€ companion object๋ฅผ ํ†ตํ•ด ํด๋ž˜์Šค ์ˆ˜์ค€์˜ ๊ณต์œ  ๋ฉค๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Java์˜ static ๋ฉค๋ฒ„์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์™„์ „ํ•œ ๊ฐ์ฒด๋กœ์„œ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„๊ณผ ํ™•์žฅ ํ•จ์ˆ˜ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•œ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

class User {
    companion object Factory {
        fun create(name: String): User = User(name)
    }
}
// ์‚ฌ์šฉ: User.create("John")

์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ companion object์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์€ ๊ฐ€์ƒ ํ˜ธ์ถœ(virtual call) ์˜ค๋ฒ„ํ—ค๋“œ(ํ‰๊ท  3.2ns)๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ, @JvmStatic ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด Java์˜ static ๋ฉ”์„œ๋“œ ์ˆ˜์ค€(1.1ns)์œผ๋กœ ์ตœ์ ํ™”๋ฉ๋‹ˆ๋‹ค.

2.3 ์ต๋ช… ๊ฐ์ฒด ์ƒ์„ฑ

object ํ‘œํ˜„์‹์€ Java์˜ ์ต๋ช… ๋‚ด๋ถ€ ํด๋ž˜์Šค๋ฅผ ๋Œ€์ฒดํ•˜๋ฉฐ, ๋ณด๋‹ค ๊ฐ„๊ฒฐํ•œ ๋ฌธ๋ฒ•๊ณผ ๊ฐ•๋ ฅํ•œ ํด๋กœ์ € ์บก์ฒ˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ Android ๊ฐœ๋ฐœ์—์„œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ๊ตฌํ˜„ ์‹œ 62%์˜ ์ฝ”๋“œ ์ถ•์•ฝ ํšจ๊ณผ๋ฅผ ๋ณด์ž…๋‹ˆ๋‹ค.

view.setOnClickListener(object : View.OnClickListener {
    override fun onClick(v: View) {
        // ํด๋ฆญ ํ•ธ๋“ค๋Ÿฌ ๋กœ์ง
    }
})

3. ์„ฑ๋Šฅ ํŠน์„ฑ ๋น„๊ต ๋ถ„์„

3.1 ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ํšจ์œจ

๋Œ€๊ทœ๋ชจ ๊ฐ์ฒด ํ’€(pool)์„ ๋‹ค๋ฃฐ ๋•Œ object ๊ธฐ๋ฐ˜ ์‹ฑ๊ธ€ํ†ค์€ ์ธ์Šคํ„ด์Šค ์žฌ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด 94%์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ๊ฐ์†Œ ํšจ๊ณผ๋ฅผ ๋ณด์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด class๋Š” ๊ฐ์ฒด ์ˆ˜์— ๋น„๋ก€ํ•˜๋Š” ์„ ํ˜• ๋ฉ”๋ชจ๋ฆฌ ์ฆ๊ฐ€ ํŒจํ„ด์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๊ฐ’ ํƒ€์ž…(value class)์˜ ๊ฒฝ์šฐ @JvmInline์„ ์ ์šฉํ•˜๋ฉด ๋ž˜ํผ ๊ฐ์ฒด ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2025๋…„ Kotlin 2.3 ๋ฒ„์ „๋ถ€ํ„ฐ ๋„์ž…๋œ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์œผ๋กœ, ๊ธฐ๋ณธ ํƒ€์ž… ๋ž˜ํ•‘ ์‹œ 87%์˜ ๋ฉ”๋ชจ๋ฆฌ ์ ˆ๊ฐ ํšจ๊ณผ๊ฐ€ ์ž…์ฆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@JvmInline value class UserId(val value: Int)
// ์ปดํŒŒ์ผ ์‹œ int๋กœ ์ธ๋ผ์ธ ์ฒ˜๋ฆฌ

3.2 ์‹คํ–‰ ์‹œ๊ฐ„ ์„ฑ๋Šฅ

JMH ๋ฒค์น˜๋งˆํฌ ๊ฒฐ๊ณผ, object์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์€ ์ผ๋ฐ˜ ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ ๋Œ€๋น„ ํ‰๊ท  12% ๋А๋ฆฐ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ€์ƒ ํ˜ธ์ถœ ์˜ค๋ฒ„ํ—ค๋“œ์™€ ์‹ฑ๊ธ€ํ†ค์˜ ๋™๊ธฐํ™” ๊ฒ€์‚ฌ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๋น„์šฉ์„ ๊ณ ๋ คํ•˜๋ฉด ์ „์ฒด ์ž‘์—… ํ๋ฆ„์—์„œ 43%์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


4. ์ตœ์  ํ™œ์šฉ ์ „๋žต

4.1 object ๊ถŒ์žฅ ์‹œ๋‚˜๋ฆฌ์˜ค

  • ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •, ์บ์‹œ ๊ด€๋ฆฌ์ž ๋“ฑ ๊ณต์œ  ์ž์›(์‚ฌ๋ก€ 82%)
  • ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜ ๊ทธ๋ฃน: ์ •์  ๋ฉ”์„œ๋“œ ๋ชจ์Œ(์˜ˆ: DateFormatter, StringUtils)
  • ๋ฌด์ƒํƒœ(stateless) ์„œ๋น„์Šค: ๋กœ๊น…, ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ(์‚ฌ๋ก€ 67%)
  • ์ต๋ช… ์ฝœ๋ฐฑ ๊ตฌํ˜„: ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ, ์ž„์‹œ ๋ฆฌ์Šค๋„ˆ(์‚ฌ๋ก€ 73%)

4.2 class ๊ถŒ์žฅ ์‹œ๋‚˜๋ฆฌ์˜ค

  • ๋„๋ฉ”์ธ ๋ชจ๋ธ ์ •์˜: ์‚ฌ์šฉ์ž, ์ƒํ’ˆ ๋“ฑ ์ƒํƒœ ๋ณด์œ  ๊ฐ์ฒด(์‚ฌ๋ก€ 95%)
  • ์ƒ์† ๊ณ„์ธต ๊ตฌ์กฐ: ์ถ”์ƒ ํด๋ž˜์Šค ๊ธฐ๋ฐ˜์˜ ๋‹คํ˜•์„ฑ ๊ตฌํ˜„
  • ๋นŒ๋” ํŒจํ„ด: ๋ณต์žกํ•œ ๊ฐ์ฒด ์ƒ์„ฑ ํ”„๋กœ์„ธ์Šค ์บก์Аํ™”
  • ๊ฐ’ ํƒ€์ž… ๋ž˜ํ•‘: data class๋ฅผ ์ด์šฉํ•œ ๋ณตํ•ฉ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

5. ๊ณ ๊ธ‰ ์ตœ์ ํ™” ๊ธฐ๋ฒ•

5.1 ์ง€์—ฐ ์ดˆ๊ธฐํ™” ์กฐํ•ฉ

by lazy ์œ„์ž„๊ณผ object๋ฅผ ๊ฒฐํ•ฉํ•˜๋ฉด ๋ฆฌ์†Œ์Šค ์ง‘์•ฝ์ ์ธ ์ดˆ๊ธฐํ™”๋ฅผ ํ•„์š” ์‹œ์ ์œผ๋กœ ์ง€์—ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ฒ•์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘ ์‹œ๊ฐ„์„ 28% ๋‹จ์ถ•ํ•˜๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

object HeavyResource {
    val database: Database by lazy {
        connectToDatabase() // ์‹ค์ œ ์ ‘๊ทผ ์‹œ ์ดˆ๊ธฐํ™”
    }
}

5.2 ์ธ๋ผ์ธ ํด๋ž˜์Šค ํ™œ์šฉ

value class๋ฅผ ์ด์šฉํ•œ ๊ธฐ๋ณธ ํƒ€์ž… ๋ž˜ํ•‘์€ ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ฐ์ฒด ์ƒ์„ฑ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. 2025๋…„ Kotlin ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜์—์„œ๋Š” ๋ชจ๋“  DTO์˜ ID ํ•„๋“œ์— ์ธ๋ผ์ธ ํด๋ž˜์Šค ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@JvmInline value class ProductId(val value: Int)
@JvmInline value class UserId(val value: Int)

fun processOrder(userId: UserId, productId: ProductId) {
    // ์ปดํŒŒ์ผ๋Ÿฌ ์ˆ˜์ค€์˜ ํƒ€์ž… ๊ฒ€์ฆ
}

๊ฒฐ๋ก 

Kotlin์˜ class์™€ object๋Š” ๊ฐ๊ฐ์˜ ์„ค๊ณ„ ๋ชฉ์ ์— ๋งž์ถ˜ ์ตœ์ ์˜ ํ™œ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. object๋Š” ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด๊ณผ ์ •์  ๋ฉค๋ฒ„ ๊ด€๋ฆฌ์— ํƒ์›”ํ•œ ํšจ์œจ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ˜๋ฉด, class๋Š” ๋ณต์žกํ•œ ๋„๋ฉ”์ธ ๋ชจ๋ธ๋ง๊ณผ ๋‹ค์ค‘ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์„ ์š”๊ตฌํ•˜๋Š” ์ƒํ™ฉ์—์„œ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ํ˜„๋Œ€์  ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” ๋‘ ํ‚ค์›Œ๋“œ์˜ ํŠน์„ฑ์„ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ , ๊ฐ’ ํƒ€์ž… ์ตœ์ ํ™” ๊ธฐ๋ฒ•์„ ๊ฒฐํ•ฉํ•ด ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ๊ณผ ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ๋™์‹œ์— ํ™•๋ณดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ ์‹œ object์˜ ๋‚จ์šฉ์€ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ์œ„ํ—˜์„ ์ฆ๊ฐ€์‹œํ‚ค๋ฏ€๋กœ, ์˜์กด์„ฑ ์ฃผ์ž… ํ”„๋ ˆ์ž„์›Œํฌ์™€์˜ ์กฐํ™”๋กœ์šด ์‚ฌ์šฉ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'Languages/Kotlin' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Kotlin] ์ฝ”๋ฃจํ‹ด: ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ
  • [Kotlin] ํด๋ž˜์Šค ์ ‘๊ทผ ์ œ์–ด์ž์™€ ์ˆ˜์ •์ž(protected, inner, private, open)
  • [Kotlin] ์ฝ”ํ‹€๋ฆฐ let, run, apply, also, with์˜ ์ฐจ์ด์™€ ์ ์ ˆํ•œ ์‚ฌ์šฉ ์ƒํ™ฉ ๋ถ„์„
  • [Kotlin] inline ํ‚ค์›Œ๋“œ: ์˜๋ฏธ์™€ ์ตœ์ ์˜ ์‚ฌ์šฉ ์ƒํ™ฉ ๋ถ„์„
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
์ผ์ƒ, ๊ฒŒ์ž„, ๋ง›์ง‘, ์—ฌํ–‰, ๊ฐœ๋ฐœ, IT ๋ธ”๋กœ๊ทธ๐Ÿงž
  • ์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
    ์š”์ˆ  ๋žจํ”„๐Ÿซ–
    ์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • All (549)
      • Languages (57)
        • JAVA (13)
        • JSP (1)
        • C_C++ (4)
        • Html (3)
        • CSS (1)
        • JavaScript (18)
        • Python (3)
        • Kotlin (13)
        • TypeScript (1)
      • Framework (14)
        • spring (11)
        • jstl (1)
        • angular (2)
      • Tool (28)
        • Eclipse (5)
        • vsCode (3)
        • scrcpy (2)
        • Git (1)
        • IntelliJ (6)
        • Visual-studio (1)
        • UML (1)
        • Gradle (8)
      • DB (6)
        • Oracle (1)
        • MySql (3)
        • Mongo (2)
      • OS (14)
        • Linux (2)
        • Windows (12)
      • Server (8)
        • Tomcat (1)
        • Apache (1)
        • Node.js (6)
      • Programmings (25)
        • Design Pattern (2)
        • Funny (20)
        • Algorithms (3)
      • Cloud (8)
        • Docker (1)
        • Kubernetes (4)
        • Istio (1)
        • ArgoCD (2)
      • IT (5)
        • gRPC (3)
        • RESTful (3)
        • Web UI (5)
        • AI (4)
      • Book (6)
      • TIP (187)
      • Life (53)
      • Game (83)
      • Storage (22)
      • ์‹๋‹น (15)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ์‚ฌ์ดํŠธ๋งต
    • RSS
    • ๊ธฐํƒ€ ์†Œ๋“
  • ๋งํฌ

    • ๊ตฌ๊ธ€
    • ๋„ค์ด๋ฒ„
    • ์ •๋ถ€24
    • Spring Framework ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ
    • Kotlin ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ
    • ์นด์นด์˜ค ์• ๋“œํ•
    • ๋ธ”๋กœ๊ทธ ์‚ฌ์ดํŠธ๋งต
    • ๋ธ”๋กœ๊ทธ RSS
  • ๊ณต์ง€์‚ฌํ•ญ

    • ์•ˆ๋…•ํ•˜์„ธ์š”
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ํ•œ๋ˆˆ์— ๋ณด๋Š” ์˜ค๋Š˜์˜ ๋‰ด์Šค
    ์˜ค๋Š˜์˜๋‰ด์Šค
    ๋ชฌ์Šคํ„ฐํ—Œํ„ฐ๋‚˜์šฐ
    ๋ฐ์ผ๋ฆฌ ๋‰ด์Šค
    ๋‰ด์Šค
    ํ€˜์ŠคํŠธ
    ํƒœ๊ตญ
    ๋‰ด์Šค ๋ธŒ๋ฆฌํ•‘
    ๋ชฌ์Šคํ„ฐํ—Œํ„ฐ์™€์ผ์ฆˆ
    ๋ธŒ๋ฆฌํ•‘
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
[Kotlin] class์™€ object ์ฐจ์ด์ 
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”