[Java] νλ‘κ·Έλλ° κΈ°μ΄ - Javaμ νΉμ§κ³Ό κ°μ²΄ μ§ν₯
π§ μλ° νλ‘κ·Έλλ°μ νΉμ§
1. κ°μ²΄ μ§ν₯ μΈμ΄νλ‘κ·Έλλ° (OOP)
=> μ μ§λ³΄μκ° μ½κ³ νμ₯μ±μ΄ μ’μ
2. μλ λ©λͺ¨λ¦¬ κ΄λ¦¬
=> Javaλ κ°λ°μκ° μ§μ λ©λͺ¨λ¦¬μ μ κ·Όν μ μμΌλ©° Garbage Collectorλ₯Ό ν΅ν΄ μ¬μ©νμ§ μλ λ©λͺ¨λ¦¬λ₯Ό μλμΌλ‘ μ²λ¦¬ν΄ μ€
3. μ΄μ체μ μ λ 립μ
=> Javaλ JVM(Java Virtual Machine) μμμ λμκ°κΈ° λλ¬Έμ μ΄λ€ μ΄μ체μ λ μκ΄μμ΄ λ 립μ μΌλ‘ μ€νμ΄ κ°λ₯ν¨
4. νλΆν κΈ°λ₯μ΄ μ 곡λλ μ€ν μμ€ λΌμ΄λΈλ¬λ¦¬
5. λ©ν°μ°λ λ νλ‘κ·Έλλ° μ§μ
=> νλμ νλ‘κ·Έλ¨μ΄ λμΌν μ°λ λλ₯Ό λμμ μνν μ μμ
6. μμ νκ³ κ°λ ₯ν¨
=> λ©λͺ¨λ¦¬ μ κ·Όμ μλ°μ μμ€ν μμ κ΄λ¦¬ν΄ νλ‘κ·Έλ¨μ΄ μμ μ μ΄κΈ° λλ¬Έμ μμ€ν λΆκ΄΄(νλ‘κ·Έλ¨μ λΉμ μμ μ’ λ£)μ μ°λ €κ° μμ
π§ νλ‘κ·Έλλ°μ΄λ? => μ»΄ν¨ν°κ° μΌμ μννλλ‘ νλ‘κ·Έλλ° μΈμ΄λ‘ νλ‘κ·Έλ¨μ λ§λλ μΌ
π§ JVM(μλ° κ°μ λ¨Έμ )μ ꡬλ λ°©μ => JVMμμ λ³λμ μ»΄νμΌλ¬λ₯Ό ν΅ν΄ μ»΄νμΌμ νκ² λλ©΄ byte (Class νμΌμ νν) μ½λλ‘ λ³νλκ³ λͺ λ Ήμ΄(.exe)κ° μμ λ JVMμ΄ λ°μ΄νΈ μ½λλ₯Ό κ°μ Έκ° ν΄λΉ μ΄μ체μ λ§κ² μ»΄νμΌν΄ μ€ν κ°λ₯νλλ‘ ν¨
π§ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄λ
1. νλ‘κ·Έλ¨μ λμμΈ κ°μ²΄λ€μ μ μν΄μ κ·Έ κ°μ²΄λ€μ λ©μλ κΈ°λ₯μ μ μνκ³ κ°μ²΄ κ°μ νλ ₯μ κΈ°λ°μΌλ‘ νλ‘κ·Έλλ°μ νλ κ²
1.1 κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ νΉμ§
1) μμ(Inheritance) : κΈ°μ‘΄ ν΄λμ€(λΆλͺ¨)λ₯Ό νμ₯ν΄μ μλ‘μ΄ ν΄λμ€(μμ)λ₯Ό λ§λλ κΈ°λ₯
2) μΆμν(Abstraction) : μλ°μμ 곡ν΅λ μμ±, κΈ°λ₯μ λ¬Άμ΄ μ΄λ¦μ λΆμ΄λ κ²μ μλ―Ένλ©° μΆμν΄λμ€, μΈν°νμ΄μ€λ₯Ό ν΅ν΄ ꡬνν¨
3) λ€νμ±(Polymorphism) : νλμ κ°μ²΄κ° μ¬λ¬ νμ μ κ°μ§ μ μλ κ²μ μλ―Ένλ©° μ€λ²λ‘λ©, μ€λ²λΌμ΄λ© λ±μ λ°©λ²μ΄ μμ
4) μΊ‘μν(Encapsulation) : μΈλΆμμ μ½κ² μ κ·Όνμ§ λͺ»νλλ‘ κ΄λ ¨λ κΈ°λ₯κ³Ό λ°μ΄ν°λ₯Ό νλμ Classλ‘ λ¬Άμ΄μ μ¬μ©νλ λ² (μ 보 μλ)
1.2 κ°μ²΄ μ§ν₯μ μ₯μ
- μ½λμ μ¬μ¬μ©μ±μ΄ λμ
- μ μ§λ³΄μμ μ©μ΄ν¨
- μ λ’°μ± λμ νλ‘κ·Έλ¨ κ΅¬ν κ°λ₯
- λκ·λͺ¨ νλ‘μ νΈμ μ ν©ν¨
- λλ²κΉ μ΄ μ¬μ
1.3 κ°μ²΄ μ§ν₯μ λ¨μ
- μ μ°¨μ§ν₯μ λΉν΄ μ€ν μλκ° λλ¦Ό
- μ€κ³μ λ§μ μκ°μ΄ μμλ¨
π§ μλ° κ΅¬μ± μμ
1) ν΄λμ€(Class)
=> κ°μ²΄λ₯Ό μ μνλ μ€κ³λ(ν)
=> κ°μ²΄μ μμ±μ μ μνκ³ , κΈ°λ₯μ ꡬννμ¬ λ§λ€μ΄ λμ μ½λ μν
2) λ©μλ(Method)
=> κ°μ²΄μ λμ λ° κΈ°λ₯μ ꡬννκΈ° μν΄ ν΄λμ€ λ΄λΆμ ꡬνλλ ν¨μ
=> λ©€λ² ν¨μλΌκ³ λ λΆλ¦Ό
=> λ©μλ λͺ μ μ¬μ©νλ κ°μ²΄(ν΄λΌμ΄μΈνΈ)μ λ§κ² μ§λ κ²μ΄ μ’μ
3) νλ(Field)
=> κ°μ²΄μ λ°μ΄ν°κ° μ μ₯λλ κ³³