# Kotlin κΈ°λ³Έ λ¬Έλ²_ν΄λμ€ μμ λ° μΈν°νμ΄μ€μ λ€μ€ μμ & μΆμ ν΄λμ€μ λ©μλ & ν΄λμ€ λ³μμ λ€νμ±
# Kotlin κΈ°λ³Έ λ¬Έλ²_ν΄λμ€ μμ λ° μΈν°νμ΄μ€μ λ€μ€ μμ
: κΈ°μ‘΄ ν΄λμ€κ° κ°μ§κ³ μλ κ²μ κ·Έλλ‘ λ¬Όλ €λ°μΌλ©° νμλ‘ νλ νλ, λ©μλ λ±μ μΆκ°λ‘ μ μνλ κ²
ex 1) μμ 1_Automobile,kt
ex 2) μμ 2_exam08.kt
- μΈν°νμ΄μ€(interface)
: μΆμ ν΄λμ€μ μ μ¬ν μ±κ²©μ μ§λλ©°, interface ν€μλλ₯Ό μ΄μ©νμ¬ μ μνλ€.
+ λ΄λΆμλ μΆμ λ©μλλ₯Ό μ μΈ
+ ν΄λμ€μμ μΈν°νμ΄μ€λ₯Ό λ°μ μμ±ν λ μμκ³Ό λ§μ°¬κ°μ§λ‘ ': μΈν°νμ΄μ€λͺ ' νμμ μ¬μ©
+ Kotlinμ λ€μ€ μμμ μ§μνμ§ X --> μΈν°νμ΄μ€λ₯Ό μ¬μ©νμ¬ λ€μ€ μμκ³Ό μ μ¬ν ꡬν κ°λ₯
ex) μμ 1_exam10.kt
# Kotlin κΈ°λ³Έ λ¬Έλ²_μΆμ ν΄λμ€μ λ©μλ
- μΆμ ν΄λμ€
: ν΄λμ€ μμ abstract ν€μλλ₯Ό λΆμ¬ μ§μ νλ ν΄λμ€λ‘, μΈμ€ν΄μ€ μμ±μ΄ λΆκ°νλ€.
- μΆμ λ©μλ
: λ³Έμ²΄κ° μ‘΄μ¬νμ§ μλ λ©μλλ‘, λ©μλμ μμ abstract ν€μλλ₯Ό λΆμ¬ μ§μ νλ€.
+ μΆμ λ©μλλ₯Ό ν¬ν¨νλ ν΄λμ€λ λ°λμ μΆμ ν΄λμ€λ‘ μ§μ ν΄μΌ νλ€.
- μΆμ ν΄λμ€μ μΆμ λ©μλμ μ¬μ© λͺ©μ
: 곡ν΅μ μΌλ‘ μ¬μ©λλ κΈ°λ₯μ μΆμ λ©μλλ‘ μ μΈν λ€, μΆμ ν΄λμ€λ₯Ό μμλ°μ νμ μΆμ λ©μλλ₯Ό μ€λ²λΌμ΄λ©νμ¬ μ¬μ©νκΈ° μν¨
+ μ΄λ 'ꡬννλ€(implement)'λ μΆμ λ©μλλ₯Ό μ€λ²λΌμ΄λ©νλ κ²μ μλ―Έ
ex) μμ 1_Animal.kt
# Kotlin κΈ°λ³Έ λ¬Έλ²_ν΄λμ€ λ³μμ λ€νμ±
- λ€νμ±(polymorphism)
: μλΈν΄λμ€μμ μμ±ν μΈμ€ν΄μ€λ₯Ό μμ μ ν΄λμ€ λ³μμ λμ ν μ μλ κ²μ μλ―Έ
+ νλμ λ³μμ μ¬λ¬ μ’ λ₯μ μΈμ€ν΄μ€ λμ κ°λ₯
ex) μμ 1_exam09.kt