-
[Kotlin] ν΄λμ€ μμ±κ³Ό μμAndroid/Kotlin 2021. 7. 4. 21:05λ°μν
- μ΄ κΈμ "μ€μ¬μ±μ Google 곡μ μΈμ΄ Kotlin" κ°μλ₯Ό λ£κ³ 곡λΆν λ΄μ©μ λ°νμΌλ‘ μμ±ν λ΄μ©μ
λλ€.
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° (Object Oriented Programming)
Kotlinμ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°κ³Ό ν¨μν νλ‘κ·Έλλ° λͺ¨λ κ°λ₯ν©λλ€.
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ΄λ μ¬λ¬ 곡ν΅μ μΌλ‘ μ¬μ©λλ μμ±λ€μ νλμ κ°μ²΄λ‘ νννμ¬ λ°μ΄ν°μ κΈ°λ₯λ€μ κ΄λ¦¬νλ νλ‘κ·Έλλ° κΈ°λ²μ λλ€.
Javaμ κ°μ΄ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ νκΈ° μν΄μ ν΄λμ€μ μμ±κ³Ό μμνλ λ°©λ²μ λν΄ μκ°νλ €κ³ ν©λλ€.
ν΄λμ€ μμ±
class Student{ var id: Int = 0 var name : String = "ows" } fun main() { var obj = Student() print("${obj.id} ${obj.name}") }
class λΌλ μμ½μ΄λ₯Ό ν΅ν΄ ν΄λμ€λ₯Ό μμ±ν μ μμ΅λλ€.
Javaμ λ¬λ¦¬ newλ₯Ό μ¬μ©ν νμ μμ΄ ν΄λμ€μ μ΄λ¦κ³Ό κ΄νΈλ₯Ό ν΅ν΄ μμ±ν μ μμ΅λλ€.
ν΄λμ€μ μμ±μ (constructor)
ν΄λμ€μ μμ±μλ ν΄λμ€κ° μμ±λ λ μλμΌλ‘ νΈμΆλλ λΆλΆμΌλ‘ λ°ννλ νμ μ΄ μκΈ° λλ¬Έμ λ©μλλΌκ³ μ§μΉνμ§λ μμ΅λλ€.
맀κ°λ³μλ‘ νμν λ³μλ€μ λ°μ λ©€λ²λ³μλ€μ μ΄κΈ°ννλ λͺ©μ μΌλ‘ μ¬μ©ν©λλ€.
constructor ν€μλλ₯Ό μ¬μ©νμ¬ μμ±μλ₯Ό μ μΈν μ μμ΅λλ€.
μμ±μλ₯Ό 맀κ°λ³μκ° λ€λ₯΄κ² μ€μ νμ¬ μ¬λ¬ λ² μ μΈν μλ μμ΅λλ€.
class Student{ constructor(id : Int, name: String){ this.id = id this.name = name } var id: Int = 0 var name : String = "ows" } fun main() { var obj = Student(1, "hong gil dong") print("${obj.id} ${obj.name}") }
init μ½λ λΈλ
kotlinμμλ init μ½λ λΈλλ₯Ό ν΅ν΄ ν΄λμ€κ° μμ± μμ μλμΌλ‘ μ²λ¦¬λλ μ½λ λΈλμ μ§μ ν μ μμ΅λλ€.
μμ±μκ° μ£Όλ‘ λ³μμ μ΄κΈ°ννλ₯Ό νκ² λκ³ , init μ½λ λΈλμ μμ±κ³Ό λμμ μ€νν΄μΌ νλ κΈ°λ₯μ΄λ λμλ€μ μ μνλλ‘ ν©λλ€.
λν, μ¬λ¬ μμ±μμκ² κ³΅ν΅μ μΌλ‘ ν¬ν¨λλ κΈ°λ₯λ€μ μ μνκΈ° μν΄ μ¬μ©νκΈ°λ ν©λλ€.
class Student{ init { println("Student init λΈλ‘") } constructor(id : Int, name: String){ this.id = id this.name = name } constructor(id: Int){ this.id = id } var id: Int = 0 var name : String = "ows" }
public final class Student { private int id; @NotNull private String name; public final int getId() { return this.id; } public final void setId(int var1) { this.id = var1; } @NotNull public final String getName() { return this.name; } public final void setName(@NotNull String var1) { Intrinsics.checkParameterIsNotNull(var1, "<set-?>"); this.name = var1; } public Student(int id, @NotNull String name) { Intrinsics.checkParameterIsNotNull(name, "name"); super(); String var3 = "Student init λΈλ‘"; boolean var4 = false; System.out.println(var3); this.name = "ows"; this.id = id; this.name = name; } public Student(int id) { String var2 = "Student init λΈλ‘"; boolean var3 = false; System.out.println(var2); this.name = "ows"; this.id = id; } }
kotlinμΌλ‘ λ§λ μ½λλ₯Ό μ»΄νμΌ ν java μ½λλ‘ λμ»΄νμΌν κ²°κ³Όμ λλ€.
kotlinμ λ©€λ² λ³μλ₯Ό μλμΌλ‘ get, setν¨μλ₯Ό λ§λ€μ΄ μ£ΌκΈ° λλ¬Έμ μ§μ μ κ·Όνλ κ²μ²λΌ μ¬μ©ν μ μμ΅λλ€.
init λ©μλ λΈλμμ νΈμΆνλ κΈ°λ₯λ€μ΄ λͺ¨λ μμ±μμ ν¬ν¨λ κ²μ νμΈν μ μμμ΅λλ€.
ν΄λμ€ κΈ°λ³Έ μμ±μ
class Student(var id: Int, var name: String){ init { println("Student init λΈλ‘") } constructor(id: Int) : this(id, "ows"){ this.id = id } }
ν΄λμ€ κΈ°λ³Έ μμ±μλ class μ μΈνλ λΆλΆμμ 맀κ°λ³μλ₯Ό μ λ ₯νλ©΄ κΈ°λ³Έ μμ±μλ‘ μ€μ μ΄ λ©λλ€.
var, val μμ½μ΄λ κ°μ΄ μ λ ₯μ νκ² λλ©΄ ν΄λμ€μ λ©€λ²λ³μλ‘ μλ μ μΈμ΄ λ©λλ€. ν¬ν¨νμ§ μμ μ λ³μ μ΄κΈ°ν μ©λλ‘λ§ μ¬μ©νλ μ§μλ³μκ° λ©λλ€.
κΈ°λ³Έ μμ±μλ₯Ό μ€μ μ ν κ²½μ°, 보쑰 μμ±μ(constructor)λ₯Ό μ μΈ μμ κΈ°λ³Έμμ±μλ₯Ό ν΅ν΄μλ§ μ¬μ©ν μ μμ΅λλ€. μ΄ λ, this ν€μλλ₯Ό μ¬μ©νλ©΄ λ©λλ€.
κΈ°λ³Έ μμ±μλ₯Ό μ μΈνκ³ λ³΄μ‘° μμ±μλ init μ½λ λΈλμ΄ μ€νλ μ΄νλ‘ μμ±μμμ λ³μκ° μ΄κΈ°νλ©λλ€.
public final class Student { private int id; @NotNull private String name; public final int getId() { return this.id; } public final void setId(int var1) { this.id = var1; } @NotNull public final String getName() { return this.name; } public final void setName(@NotNull String var1) { Intrinsics.checkParameterIsNotNull(var1, "<set-?>"); this.name = var1; } public Student(int id, @NotNull String name) { Intrinsics.checkParameterIsNotNull(name, "name"); super(); this.id = id; this.name = name; String var3 = "Student init λΈλ‘"; boolean var4 = false; System.out.println(var3); } public Student(int id) { this(id, "ows"); this.id = id; } }
λμ»΄νμΌν κ²°κ³Όλ μ κ³Ό λμΌνκ² init μ½λ λΈλμ νΈμΆνκ² λκ³ , λ©€λ² λ³μλ μ μμ μΌλ‘ μ μλ κ²μ νμΈν μ μμ΅λλ€.
μμ
ν΄λμ€λ₯Ό μ€κ³ν λ 곡ν΅λ λΆλΆμ΄ μλ€λ©΄ μμ ν΄λμ€λ₯Ό μμ±νκ³ νμν΄λμ€κ° λ¬Όλ € λ°λλ‘ νλ λ°©λ²μ΄ μμμ λλ€.
μμνλ ν΄λμ€λ₯Ό λΆλͺ¨ ν΄λμ€, μμλ°λ ν΄λμ€λ₯Ό μμ ν΄λμ€λΌκ³ νλ©° μλ°μ λ¬λ¦¬ classλ‘ μ μΈλ ν΄λμ€λ μμν μ μκ³ open ν€μλλ₯Ό λΆμΈ ν΄λμ€λ§ μμμ΄ κ°λ₯ν©λλ€.
open class Human(var name: String){ fun printparentmethod(){ println("parent method") } } class Student(var id: Int, name: String) : Human(name){ init { println("Student init λΈλ‘") } constructor(id: Int) : this(id, "ows"){ this.id = id } fun printchildmethod(){ println("child method") } } fun main() { var obj = Student(1, "hong gil dong") obj.printparentmethod() obj.printchildmethod() }
- μμ μμλ λΆλͺ¨ ν΄λμ€μ κΈ°λ³Έ μμ±μλ₯Ό μ¬μ©ν΄μ μ μΈν΄μΌ νκ³ , 맀κ°λ³μκ° μμ μμ λμ ν΄μΌ ν κ°λ€μ 미리 μ λ ₯ν΄μΌ μ¬λ°λ₯Έ μμμ΄ μ΄λ£¨μ΄μ§λλ€.
λ°μν'Android > Kotlin' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Kotlin] Array μ¬μ©λ² (0) 2021.08.12 [Kotlin] Functional Programming (0) 2021.08.11 [Kotlin] Generic, Inner ν΄λμ€ (0) 2021.07.07 [Kotlin] Companion Object λ? (0) 2021.07.05 [Kotlin] μ κ·Όμ νμ, property, get(), set() (0) 2021.07.05 - μ΄ κΈμ "μ€μ¬μ±μ Google 곡μ μΈμ΄ Kotlin" κ°μλ₯Ό λ£κ³ 곡λΆν λ΄μ©μ λ°νμΌλ‘ μμ±ν λ΄μ©μ
λλ€.