π‘ ν¨μμ λ©μλμ μ°¨μ΄λ₯Ό μκ³ , νλ‘νΌν°μ νλμ λν΄μλ νμ΅νμμ΅λλ€.
ν¨μ vs λ©μλ
- λ©μλμ ν¨μλ νλ‘κ·Έλλ° κ΄μ μμ λ§€μ° μ μ¬ν κ°λ μ΄μ§λ§, μ¬μ© λ§₯λ½μ λ°λΌ μ°¨μ΄κ° μμ΅λλ€.
- ν¨μ(function)
- μ½νλ¦°μ ν¨μλ₯Ό fun ν€μλλ₯Ό νμ©ν΄μ μμν©λλ€.
- μ΄λ₯Ό νμ©ν΄μ top-level ν¨μ, λ©€λ² ν¨μ, μ§μν¨μ λ±μ μμ±ν μ μμ΅λλ€.
- μλμ κ°μ΄ μ΄λ¦μ΄ μλ μ΅λͺ ν¨μλ‘ νμ©λ κ°λ₯ν©λλ€.
val anonymousFunction = fun(x: Int, y: Int): Int {
return x + y
}
- λ©μλ(method)
- λ©μλλ ν΄λμ€μ μ°κ²°λ ν¨μ, κ°μ²΄μ μν ν¨μλ₯Ό μλ―Έν©λλ€.
- λ©€λ² ν¨μλ₯Ό λ©μλλΌκ³ νλ©°, λ©μλ νΈμΆμ μν΄μ ν΄λμ€ μΈμ€ν΄μ€κ° λ°λμ νμν©λλ€.
- νμ₯ ν¨μλ λ©μλμΈκ°?
- νμ₯ ν¨μλ₯Ό νΈμΆν λ μΈμ€ν΄μ€κ° νμνλ―λ‘, λ©μλλΌκ³ λ³Ό μ μμ΅λλ€.
class Calculator()
fun Calculator.add(a: Int, b: Int): Int {
return a + b
}
νλ‘νΌν° vs νλ
- μλ°μμλ νλλΌλ μ©μ΄λ₯Ό μ£Όλ‘ μ¬μ©νμ§λ§, μ½νλ¦°μμλ νλ‘νΌν°λΌλ μ©μ΄λ₯Ό μ£Όλ‘ νμ©ν©λλ€.
- νλ‘νΌν°(Property)
- ν΄λμ€λ κ°μ²΄μ μνλ₯Ό λνλ΄λ λ³μλ‘, λ°μ΄ν°λ₯Ό μ μ₯νκ³ μ½κ³ μΈ μ μλ λ©μλλ₯Ό μ 곡ν©λλ€.
- νλ‘νΌν°λ μ€μ νλμ κ°μ§ μμΌλ©°, μλμ κ°μ κ΅¬μ± μμλ‘ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
- μ€μ λ°μ΄ν° μ μ₯ 곡κ°(Field)
- μ μ₯λ κ°μ μ½μΌλ €κ³ ν λ νΈμΆλλ ν¨μ(Getter)
- κ°μ μ μ₯νλ €κ³ ν λ νΈμΆλλ ν¨μ(Setter)
class Person {
var name: String = "Jinwoo"
get() = field
set(value) {
field = value
}
val isAdult: Boolean
get() = age >= 18 // 컀μ€ν
getter
var age: Int = 0
- μ μ½λμμ nameκ³Ό ageκ° νλ‘νΌν°λΌκ³ ν μ μμ΅λλ€.
- name νλ‘νΌν°λ getter, setterλ₯Ό ν΅ν΄ κ°μ μ½κ³ μΈ μ μμ΅λλ€.
- isAdult νλ‘νΌν°λ 컀μ€ν getterλ₯Ό μ¬μ©νμ¬ νλ μμ΄ age νλ‘νΌν°λ₯Ό κΈ°λ°μΌλ‘ κ°μ κ³μ°ν©λλ€.
- νλ(Field)
- νλλ ν΄λμ€ λ΄μμ λ°μ΄ν°λ₯Ό μ μ₯νλ λ° μ¬μ©λλ λ³μλ‘, μ§μ μ μΌλ‘ μ κ·Όν μ μλ κ²½μ°κ° λ§μ΅λλ€.
- νλλ μΌλ°μ μΌλ‘ νλ‘νΌν°μ κ°μ΄ μ€μ λ‘ μ μ₯λλ μ₯μλ‘ μ¬μ©λ©λλ€.
- Kotlinμμλ νλ‘νΌν°μ λ°±νΉ νλ(backing field)λ‘ μ¬μ©λ©λλ€.
class Person {
var name: String = "Jinwoo"
private set // μΈλΆμμ setter λ§κΈ°
var age: Int = 0
get() = filed // backing field
set(value) {
if (value > 0) {
field = value
}
}
}
- μ μ½λμμ nameκ³Ό age νλ‘νΌν°λ νλλ₯Ό κ°μ§λλ€.
- name νλ‘νΌν°λ private setterλ₯Ό νμ©νμμ΅λλ€.
- age νλ‘νΌν°λ λ°±νΉ νλλ₯Ό μ¬μ©νμ¬ getter, setterλ₯Ό ν΅ν΄μ κ°μ μ½κ³ μΈ μ μμ΅λλ€.
νλ‘νΌν°μ νλμ μ°¨μ΄μ ?
- νλ‘νΌν°λ ν΄λμ€λ κ°μ²΄μ μνλ₯Ό λνλ΄λ λ³μλ‘ κ°μ μ½κ³ μΈ μ μμ΅λλ€.
- νλλ λ°μ΄ν°λ₯Ό μ μ₯νλ λ³μλ‘, νλ‘νΌν°μ κ°μ΄ μ€μ λ‘ μ μ₯λλ μ₯μμ λλ€.
- Kotlinκ³Ό κ°μ μΈμ΄μμμ νλ‘νΌν°λ κ°λ¨νκ³ λͺ ννκ² λ°μ΄ν° μ κ·Όμ κ΄λ¦¬ν μ μλ κ³ μμ€ κ°λ μ΄λ©°, νλλ λ°μ΄ν°λ₯Ό μ€μ λ‘ μ μ₯νλ μ μμ€μ κ°λ μ λλ€.