πŸ’» 개발/Kotlin

[μ½”ν‹€λ¦° 완전정볡] μ œλ„€λ¦­

2022. 4. 25. 18:55
λͺ©μ°¨
  1. μ œλ„€λ¦­
  2. μ œλ„€λ¦­μ˜ μ‚¬μš© 방법
  3. μ œλ„€λ¦­ λ©”μ†Œλ“œ
  4. μžλ£Œν˜• μ œν•œν•˜κΈ°

μ œλ„€λ¦­

μ œλ„€λ¦­ , λ‹€λ₯Έ μ–Έμ–΄λ₯Ό 이미 κ²½ν—˜ν•˜κ³  μ™”λ‹€λ©΄ λ‚―μ„  λ‹¨μ–΄λŠ” μ•„λ‹ˆλ‹€. 뭐 λŒ€μΆ© μ–˜κΈ°ν•˜λ©΄ μžλ£Œν˜• 을 λ‚˜μ€‘μ— μ„ μ–Έν•˜λŠ”? 그런 λŠλ‚Œμ΄λ‹€. μš°μ„  ν™•μ‹€ν•˜κ²Œ μ§‘κ³  λ„˜μ–΄κ°€λ³΄μž.

κ·Έλž˜μ„œ μ œλ„€λ¦­μ΄ 뭐고 μ™œ μ“°λŠ”κ±°μ—μš”? πŸ€”

μ œλ„€λ¦­ 은 클래슀 λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•  μžλ£Œν˜•μ„ λ‚˜μ€‘μ— μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œ ν™•μ •ν•˜λŠ” 방법이닀. μ œλ„€λ¦­μ΄ λ‚˜μ˜€κ²Œ 된 배경은 μžλ£Œν˜•μ˜ 객체듀을 λ‹€λ£¨λŠ” λ©”μ†Œλ“œλ‚˜ ν΄λž˜μŠ€μ—μ„œ 컴파일 μ‹œκ°„μ— μžλ£Œν˜•μ„ κ²€μ‚¬ν•˜μ—¬ μ λ‹Ήν•œ μžλ£Œν˜•μ„ μ„ νƒν•˜κΈ° μœ„ν•΄μ„œμ΄λ‹€. μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜λ©΄ 객체의 μžλ£Œν˜•μ„ μ»΄νŒŒμΌν•  λ•Œ μ²΄ν¬ν•˜κΈ° λ•Œλ¬Έμ— 객체 μžλ£Œν˜•μ˜ μ•ˆμ •μ„±μ„ 높이고 ν˜• λ³€ν™˜μ˜ λ²ˆκ±°λ‘œμ›€μ΄ 쀄어든닀.

μ œλ„€λ¦­μ˜ μ‚¬μš© 방법

μ œλ„€λ¦­μ€ μ•΅κΈ€ λΈŒλž˜ν‚· <> 사이에 ν˜•μ‹ λ§€κ°œλ³€μˆ˜ λ₯Ό λ„£μ–΄ μ„ μ–Έν•˜κ³  ν•˜λ‚˜ μ΄μƒμ˜ ν˜•μ‹ λ§€κ°œλ³€μˆ˜λ₯Ό μ§€μ •ν•  수 μžˆλ‹€. ν˜•μ‹ λ§€κ°œλ³€μˆ˜λŠ” μžλ£Œν˜•μ„ λŒ€ν‘œν•˜λŠ” μš©μ–΄λ‘œ T와 같은 νŠΉμ • 영문자λ₯Ό μ‚¬μš©ν•˜μ—¬ λ‚˜μ€‘μ— ν•„μš”ν•œ μžλ£Œν˜•μœΌλ‘œ λŒ€μ²΄ν•œλ‹€. 보톡 μ»¬λ ‰μ…˜ 에 많이 μ‚¬μš©ν•œλ‹€.

class Box<T> (t : T) {
    var name = t
}

fun main() {
    val box1 : Box<Int> = Box<Int>(1)
    val box2 : Box<String = Box<String>("kodo")
    // νƒ€μž… 좔둠이 κ°€λŠ₯ν•˜λ―€λ‘œ μžλ£Œν˜• μƒλž΅ κ°€λŠ₯
    // val box1 = Box<Int>(1)
    // val box2 = Box<String>("kodo")
    println(box1.name)
    println(box2.name)
}

Box 클래슀λ₯Ό μ œλ„€λ¦­μ„ μ‚¬μš©ν•΄μ„œ μ •μ˜ν–ˆλ‹€. μœ„ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ μ•„λž˜μ™€ 같은 κ²°κ³Όκ°€ 좜λ ₯λœλ‹€.

1
kodo

μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜λ©΄ 객체λ₯Ό 생성할 λ•Œ μžλ£Œν˜•μ˜ νƒ€μž…μ„ κ²°μ •ν•œλ‹€. λ”°λΌμ„œ 인자의 μžλ£Œν˜•μ„ κ³ μ •ν•  수 μ—†κ±°λ‚˜ μ˜ˆμΈ‘ν•  수 없을 λ•Œ μ‚¬μš©ν•˜λ©΄ μ‹€ν–‰μ‹œκ°„μ— μžλ£Œν˜•μ„ κ²°μ •ν•  수 있게 λ˜λ―€λ‘œ μœ μš©ν•˜λ‹€.

μ œλ„€λ¦­ λ©”μ†Œλ“œ

μ œλ„€λ¦­ 을 ν˜•μ‹ λ§€κ°œλ³€μˆ˜λ‘œ λ°›λŠ” λ©”μ†Œλ“œλ₯Ό μ œλ„€λ¦­ λ©”μ†Œλ“œλΌκ³  ν•œλ‹€.

fun <T> genericFun(arg : T) : T? { }
fun <K , V> put(key : K, value : V) : Unit { }

μ•„λž˜ μ½”λ“œλŠ” λ°°μ—΄μ—μ„œ νŠΉμ • μ›μ†Œμ˜ 인덱슀λ₯Ό μ°Ύμ•„λ‚΄λŠ” μ½”λ“œμ΄λ‹€.

fun <T> find(a : Array<T>, Target : T) : Int {
    for (i in a.indices) {
        if (a[i] == Target) return i
    }
    return -1
}

fun main() {
    val arr1 : Array<String> = arrayOf("사과", "λ°”λ‚˜λ‚˜", "μˆ˜λ°•", "멜둠")
    println(find<String>(arr1, "사과"))
}

μžλ£Œν˜• μ œν•œν•˜κΈ°

μ œλ„€λ¦­ ν΄λž˜μŠ€λ‚˜ λ©”μ†Œλ“œκ°€ λ°›λŠ” ν˜•μ‹ λ§€κ°œλ³€μˆ˜λ₯Ό νŠΉμ •ν•œ μžλ£Œν˜•μœΌλ‘œ μ œν•œν•  μˆ˜λ„ μžˆλ‹€. ν˜•μ‹ λ§€κ°œλ³€μˆ˜ λ‹€μŒμ— 콜둠(:)κ³Ό μžλ£Œν˜•μ„ κΈ°μž…ν•˜λ©΄ ν˜•μ‹ λ§€κ°œλ³€μˆ˜μ˜ μžλ£Œν˜•μ΄ λœλ‹€.

class Calc<T : Number> {
    fun plus(arg1 : T, arg2 : T) : Double {
        return arg1.toDouble() + arg2.toDouble()
    }
}

fun main() {
    val calc1 = Calc<Int>()
    println(calc1.plus(10, 10))

    val calc2 = Calc<Double>()
    println(calc2.plus(5.0, 5.0))

    val calc3 = Calc<String>() // 였λ₯˜!
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'πŸ’» 개발 > Kotlin' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[μ½”ν‹€λ¦° 완전정볡] 곡변성, λ°˜κ³΅λ³€μ„±, 무변성  (0) 2022.05.02
[μ½”ν‹€λ¦° 완전정볡] μ—¬λŸ¬ μ’…λ₯˜μ˜ 클래슀  (0) 2022.04.23
[μ½”ν‹€λ¦° 완전정볡] 좔상 ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€  (2) 2022.04.22
  1. μ œλ„€λ¦­
  2. μ œλ„€λ¦­μ˜ μ‚¬μš© 방법
  3. μ œλ„€λ¦­ λ©”μ†Œλ“œ
  4. μžλ£Œν˜• μ œν•œν•˜κΈ°
'πŸ’» 개발/Kotlin' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [μ½”ν‹€λ¦° 완전정볡] 곡변성, λ°˜κ³΅λ³€μ„±, 무변성
  • [μ½”ν‹€λ¦° 완전정볡] μ—¬λŸ¬ μ’…λ₯˜μ˜ 클래슀
  • [μ½”ν‹€λ¦° 완전정볡] 좔상 ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€
kodo_o
kodo_o
iOS κΏ€μžΌ!
kodo_o
🍎🍏
kodo_o
전체
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기 (149)
    • πŸ”¨ ν”„λ‘œμ νŠΈ (0)
      • TP 1 (0)
      • WhiteHCCTV (0)
      • FootPrint (0)
    • πŸ’» 개발 (63)
      • iOS (30)
      • Android (6)
      • Kotlin (4)
      • Flutter (9)
      • Node.js (5)
      • Architecture (1)
      • 였늘의 μ‚½μ§ˆ (7)
      • μ—λŸ¬μ™€μ˜ 동침 (1)
    • ✏️ μ•Œκ³ λ¦¬μ¦˜ (6)
      • Graph (6)
      • String (0)
      • Sort (0)
    • ✍️ μ½”ν…Œ μ€€λΉ„ (44)
      • Math (1)
      • Implementation (3)
      • String (3)
      • Brute Force (5)
      • Back Tracking (7)
      • Greedy (0)
      • Dynamic Programming (13)
      • Binary Search (1)
      • DFS, BFS (5)
      • Shortest Path (2)
      • Two Pointer (4)
      • MST (0)
    • πŸ“š CS (6)
      • Operating System (6)
    • ⛹️ 라이프 (30)
      • 2020 κ²¨μšΈλ°©ν•™ λͺ¨κ°μ½”(개인) (12)
      • 2021 여름방학 λͺ¨κ°μ½”(개인) (6)
      • μ½”λ”© ν…ŒμŠ€νŠΈ (1)
      • 회고 (10)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • κΉƒν—ˆλΈŒ

인기 κΈ€

졜근 κΈ€

졜근 λŒ“κΈ€

hELLO Β· Designed By μ •μƒμš°.
kodo_o
[μ½”ν‹€λ¦° 완전정볡] μ œλ„€λ¦­
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

단좕킀

λ‚΄ λΈ”λ‘œκ·Έ

λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
Q
Q
μƒˆ κΈ€ μ“°κΈ°
W
W

λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
E
E
λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
C
C

λͺ¨λ“  μ˜μ—­

이 νŽ˜μ΄μ§€μ˜ URL 볡사
S
S
맨 μœ„λ‘œ 이동
T
T
ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
H
H
단좕킀 μ•ˆλ‚΄
Shift + /
⇧ + /

* λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.