ν°μ€ν 리 λ·°
μ΄ κΈμ udemy κ°μμ Do it! κΉ‘μμ μλλ‘μ΄λ μ± νλ‘κ·Έλλ° with μ½νλ¦°μ μ°Έκ³ νμ¬ μμ±νμμ΅λλ€.
- κ°λ°νκ²½μ Windows, Android Studioμ λλ€.
1. Public, Private, Protected and Internal Examples (μ κ·Ό μ νμ)
μμ κ°μ κ²λ€μ μ κ·Ό μ νμλΌκ³ νλ€.
μ κ·Ό μ νμ(visibility modifier)λ ν΄λμ€μ λ©€λ²λ₯Ό μΈλΆμ μ΄λ λ²μκΉμ§ μ΄μ©νκ² ν κ²μΈμ§λ₯Ό κ²°μ νλ ν€μλμ΄λ€.
μ½νλ¦°μμλ λ³μλ ν¨μλ₯Ό ν΄λμ€λ‘ λ¬Άμ§ μκ³ μμ€νμΌμ μ΅μμμ μ μΈν μ μκ³ , μ΄ λν μ κ·Ό μ νμλ‘ λ²μλ₯Ό μ νν μ μλ€.
μ κ·Όμ νμ | μ΅μμμμ μ΄μ© | ν΄λμ€ λ©€λ²μμ μ΄μ© |
public | λͺ¨λ νμΌμμ κ°λ₯ | λͺ¨λ ν΄λμ€μμ κ°λ₯ |
internal | κ°μ λͺ¨λ λ΄μμ κ°λ₯ | κ°μ λͺ¨λ λ΄μμ κ°λ₯ |
protected | X | μμ κ΄κ³μ νμ ν΄λμ€μμλ§ κ°λ₯ |
private | νμΌ λ΄λΆμμλ§ μ΄μ© | ν΄λμ€ λ΄λΆμμλ§ μ΄μ© |
- public : μ κ·Όμ νμμ. μ κ·Ό μ νμ μλ΅ μ μλμΌλ‘ public
- internal : κ°μ λͺ¨λ λ΄ μ κ·Ό. (λͺ¨λ = Gradleκ°μ λΉλ λꡬμμ νλ‘μ νΈ or κ°μ μΈνΈ λ¨μ)
- protected : ν΄λμ€ λ΄λΆμμλ§ μ μΈ κ°λ₯
- private : λ΄λΆλ‘λ§ μ ν
2. Kotlin Constructors (μμ±μ)
- ν΄λμ€μ λ©€λ² : μμ±μ, λ³μ, ν¨μ, ν΄λμ€
- μμ±μ : μ£Ό μμ±μ, 보쑰 μμ±μλ‘ λλ¨
β μ£Ό μμ±μ
- μ£Ό μμ±μ μ μΈ
// μ£Ό μμ±μ μ μΈ class User constructor() { } // constructor ν€μλ μλ΅ κ°λ₯ class User() { } // μ£Ό μμ±μ μλ΅ μ μ»΄νμΌλ¬κ° 맀κ°λ³μκ° μλ μ£Ό μμ±μ μλ μΆκ° class User { } // μ£Ό μμ±μ 맀κ°λ³μ class User(name: String, count: Int) { }
- μμ±μ νΈμΆ
κ°μ²΄ μμ± μ 맀κ°λ³μμ νμ κ³Ό κ°μμ λ§λ μΈμ μ λ¬!
val user = User("nkim", 10)β
- init μμ
- μμ±μμλ { }λ₯Ό μΆκ°ν μ μλ€. μ΄ λ initμ μ΄μ©ν΄ μ£Ό μμ±μμ λ³Έλ¬Έμ ꡬνν μ μλ€.
- initμΌλ‘ μ§μ ν μμμ κ°μ²΄ μμ± μ μλ μ€νλ¨
- κΌ μ μΈν νμλ μμ! μ£Ό μμ±μμ λ³Έλ¬Έμ ꡬννκ³ μΆμ λ μ¬μ©
- 보쑰 μμ±μμμλ μ€νλμ§λ§ 보쑰 μμ±μλ ν΄λμ€ μμ μ μΈνλ―λ‘ { }λ₯Ό μ΄μ©ν΄ λ³Έλ¬Έ μ§μ κ°λ₯.
μ¦, init μμμ μ£Όλ‘ μ£Ό μμ±μ λ³Έλ¬Έ ꡬν μ©λλ‘ μ¬μ©λ¨ - μμ
class User(name: String, count: Int){ init { println("i am init!") } } fun main() { val user = User("nkim", 10) }β
- μΆλ ₯
i am init!β
β 보쑰 μμ±μ
- 보쑰 μμ±μ μ μΈ
class User { constructor(name: String){ println("1") } constructor(name: String, count: Int){ println("2") } } fun main() { val user1 = User("nkim") val user2 = User("nkim", 10) }ββ
- μΆλ ₯
1 2β
β 보쑰μμ±μμ μ£Όμμ±μ μ°κ²° ππ» this() μ΄μ©
λ μ€ νλλ§ ν κ²½μ°μλ λ¬Έμ κ° μλ€. λ§μ½ 보쑰/μ£Ό μμ±μ λ λ€ μ μΈ μ λ°λμ μμ±μλΌλ¦¬ μ°κ²°ν΄μ€μΌν¨!
class User(name: String) {
constructor(name: String, count: Int): this(name){
// μλ΅
}
}
fun main() {
val user = User("nkim", 10)
}ββ
- 보쑰 μμ±μ μ μΈλΆμ this(name)μ μΆκ°νλ©΄, 보쑰 μμ±μλ‘ κ°μ²΄ μμ± μ μ£Ό μμ±μκ° ν¨κ» νΈμΆλ¨
- μ£Ό μμ±μ μλ μνμμ 보쑰 μμ±μ μ¬λ¬κ° μ μΈ μ this λͺ¨λ μ¬μ©νκΈ°
β μ£Ό μμ±μ VS 보쑰 μμ±μλ₯Ό μ ꡬλΆνλμ?
λ μ€ λλ‘ λ§λ€λ κ°λ°μ λ§μ!!
곡ν΅λ μ½λλ μ£Ό μμ±μμ. λλ¨Έμ§λ 보쑰 μμ±μμ~
3. Kotlin Inheritance (μμ)
β μμκ³Ό μμ±μ
- μμ : ν΄λμ€ μ μΈ μ λ€λ₯Έ ν΄λμ€λ₯Ό μ°Έμ‘°ν΄μ μ μΈνλ κ². κΈ°μ‘΄ ν΄λμ€ μ¬μ¬μ© κ°λ₯
- ν΄λμ€ μμ νμ
open class Super { // open ν€μλλ‘ μμ κ°λ₯νκ² νμ© } class Sub: Super() { // Superμ μμλ°μ Sub ν΄λμ€ μ μΈ }
- μμ ν΄λμ€ μμ±μ νΈμΆ
- νμ ν΄λμ€μ μμ±μλ μμ ν΄λμ€μ μμ±μλ₯Ό νΈμΆν΄μΌν¨
- 맀κ°λ³μ μλ μμ ν΄λμ€ μμ
- class Sub: Super() { } μμ Super()μ Super ν΄λμ€λ₯Ό μμλ°μ + μ΄ ν΄λμ€μ 맀κ°λ³μκ° μλ μμ±μ νΈμΆ
- 맀κ°λ³μ μλ μμ ν΄λμ€ μμ
- 맀κ°λ³μ ꡬμ±μ λ§κ² μΈμ μ λ¬
-
open class Super(name: String) { } class Sub(name: String): Super(name) { }
β Overriding (μ¬μ μ)
- μμ ν΄λμ€μ μ μλ λ©€λ²(ν¨μ, λ³μ)λ₯Ό νμ ν΄λμ€μμ μ¬μ μ
- μ¦, μμ ν΄λμ€μ μ μΈλ λ³μλ ν¨μλ₯Ό κ°μ μ΄λ¦μΌλ‘ νμ ν΄λμ€μμ λ€μ μ μΈ
- μ£Όλ‘ ν¨μ μ¬μ μμ μ¬μ©
- κ°μ ν¨μλͺ μΌλ‘ νμ ν΄λμ€μμ μλ‘μ΄ λ‘μ§μ μΆκ°νκ³ μΆμ λ μ¬μ©
- κ·μΉ
- μμ ν΄λμ€ : overriding νμ©ν λ³μλ ν¨μ μ μΈ μμ open ν€μλ μΆκ°
- νμ ν΄λμ€ : μ¬μ μ ν λ³μλ ν¨μ μ μΈ μμ override ν€μλ μΆκ°
4. Kotlin Polymorphism and Abstraction (λ€νμ±κ³Ό μΆμν)
β λ€νμ±
- μ΄λ¦μ κ°μ§λ§ 맀κ°λ³μκ° λ€λ₯΄κ±°λ λ€λ₯Έ λμμ νλλ‘ νλ κ²
- μ΄ν΄νκΈ° μ½κ³ λ³κ²½νκΈ° μ¬μ΄ μ½λ μμ± κ°λ₯
β Overloading VS Overriding
- overloadingμ κ°μ μ΄λ¦μ λ©μλκ° λ§€κ°λ³μλ§ λ¬λ¦¬νμ¬ μ¬λ¬λ² μ¬μ μ λλ κ²
- μ°Έκ³ μλ£ : https://medium.com/depayse/kotlin-%ED%81%B4%EB%9E%98%EC%8A%A4-5-%EB%8B%A4%ED%98%95%EC%84%B1-polymorphism-42e8c9e2017f
β μΆμ ν΄λμ€
- μμ§ κ΅¬νλμ§ μκ³ μ μΈλ§ λ μΆμ λ©μλλ₯Ό κ°μ§κ³ μλ ν΄λμ€
- μΆμ ν΄λμ€λ λ©μλκ° κ΅¬νλμ§ μμμ μ΄ ν΄λμ€λ₯Ό μ§μ κ°μ²΄λ‘ λ§λ€ μ μκ³ λ°λμ μμμ λ°λ μμ ν΄λμ€κ° μμ΄μΌν¨
- μΆμ λ©μλλ μλΈν΄λμ€μμ λ°λμ override ν΄μ μ¬μ©
- abstract ν€μλ μ¬μ© μ ν΄λμ€λ ν¨μμ open ν€μλ λ°λ‘ λͺ μνμ§ μμλ λ¨
- λ€μ€ μμ λΆκ°
- μΈν°νμ΄μ€μ ν΄λμ€μ μ€κ°
- μΆμ ν΄λμ€λ κ°μ²΄ μμ± λΆκ°, μμ±μ κ°μ§ μ μμ
- μΆμ ν΄λμ€ μ μ
fun main(args : Array<String>) { var tempClass : AbstractClass = SubClass() tempClass.generalMethod() tempClass.abstractMethod() } open abstract class AbstractClass { //μμ ν΄λμ€μμ κ·Έλ₯ μ¬μ©ν μ μλ μΌλ° λ©μλ fun generalMethod () { println("μΌλ° λ©μλ") } //μμ ν΄λμ€μμ μ€λ²λΌμ΄λ© ν΄μΌ μ¬μ©ν μ μλ μΆμ λ©μλ open abstract fun abstractMethod() } class SubClass : AbstractClass() { override fun abstractMethod() { println("μΆμ λ©μλ ꡬν") } }β
- κ²°κ³Ό
μΌλ° λ©μλ μΆμ λ©μλ ꡬνβ
- Total
- Today
- Yesterday
- 리μ‘νΈ state
- 리λμ€
- 리μ‘νΈ ν
- 리μ‘νΈ κΈ°μ΄
- 리μ‘νΈ κ³΅μλ¬Έμ
- 리μ‘νΈ useEffect
- λ컀
- Docker&Kubernetes:μ€μ κ°μ΄λ-2022λ ν
- λ¨κΈ°μ§μ€κ³Όμ
- GCP
- docker
- 리μ‘νΈ setState
- ꡬκΈν΄λΌμ°λνλ«νΌ
- λ¨Έμ λ¬λ
- ꡬκΈ
- ν΄λΌμ°λ
- ν μνλ‘μ°
- React DOM
- 리μ‘νΈ
- 리μ‘νΈ μ»΄ν¬λνΈ
- 리λμ€ store
- μ»΄ν¬λνΈ
- React Hook
- μνμ½λ© 리μ‘νΈ
- ML
- React
- machine learning
- 리μ‘νΈ λ λλ§
- Cloud
μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |