κ°μ²΄μ§ν₯μ μΈκ° μ§ν₯μ΄λ€
κ°μ²΄ μ§ν₯μ ν° κ·Έλ¦Ό
- μΈμμ λͺ¨λ κ²μ "κ°μ²΄"λ€.
- κ°κ°μ κ³ μ νλ€.
- μ¬λ¬Όμ μμ±μ κ°λλ€.
- μ¬λ¬Όμ νμλ₯Ό νλ€.
μ°λ¦¬ μΈκ°μ μ¬λ¬Όμ "λΆλ₯"λ₯Ό ν΅ν΄ μ΄ν΄νκ³ μΈμ§νλ€.
μ¬λμ λμ΄, λͺΈλ¬΄κ²λ₯Ό κ°μ§λ©° "λ¨Ήκ±°λ, μκ±°λ, μ°λ λ±μ νλ"μ νλ 물체λ₯Ό λ»νλ€. (κ°λ μ λ°λ₯Έ λΆλ₯)
μ°λ¦¬κ° μ€μ μ¬λ¬Όμ μΈμ§νκ³ μ¬κ³ νλ λ°©μλλ‘ κ°μ²΄ λ¨μμ νλ‘κ·Έλλ°μ΄ κ°μ²΄ μ§ν₯μμ κ°λ₯νλ€.
κ°μ²΄ μ§ν₯μ 4λ νΉμ± - μΊ‘! μμΆλ€
- μΊ‘μν : μ 보μλ
- μμ : μ¬μ¬μ©
- μΆμν : λͺ¨λΈλ§
- λ€νμ± : μ¬μ©νΈμ
ν΄λμ€ vs. κ°μ²΄ = λΆμ΄λΉ΅ν vs. λΆμ΄λΉ΅ ???
λΆμ΄λΉ΅ν λΆμ΄λΉ΅ = new λΆμ΄λΉ΅ν(); //???
λΆμ΄λΉ΅νμ μλ‘μ΄ λ§λ λ€κ³ "λΆμ΄λΉ΅"μ΄ λ μ μλ€
-> λΆμ΄λΉ΅νμ κ·Έμ λΆμ΄λΉ΅μ λ§λλ ν©ν°λ¦¬μΌ λΏμ΄λ€.
ν΄λμ€μ κ°μ²΄μ κ΅¬λΆ λ°©λ²
μ£Όμ΄μ§ λ¨μ΄μ λμ΄λ₯Ό λ¬Όμ΄λ³΄μ. λ§μ½ λλ΅ν μ μλ€λ©΄ κ°μ²΄μ΄κ³ λλ΅ν μ μλ€λ©΄ ν΄λμ€μΌ κ²μ΄λ€.
μ¬λ -> ν΄λμ€, κΉμ°μ -> κ°μ²΄
ν΄λμ€λ λΆλ₯μ λν κ°λ !
κ°μ²΄λ μ€μ²΄νν κ²!
μΆμν: λͺ¨λΈλ§
"κ°μ²΄ μ§ν₯μ μΆμνλ 곧 λͺ¨λΈλ§μ΄λ€"
μΆμνλ ꡬ체μ μΈ κ²μ λΆν΄ν΄μ κ΄μ°°μκ° κ΄μ¬ μλ νΉμ±λ§ κ°μ§κ³ μ¬μ‘°ν©νλ κ²μ΄λ€.
(μΈλΆμ¬νμ λ²λ¦¬κ³ μ€μνκ³ κ³΅ν΅μ μΈ κ²λ§ μ·¨ν΄ λ΄κ° κ΄μ¬μλ κ²μ μ§μ€νλ κ²)
- κ°μ²΄ : μΈμμ μ‘΄μ¬νλ μ μΌλ¬΄μ΄ν μ¬λ¬Ό
- ν΄λμ€ : κ°μ μμ±κ³Ό κΈ°λ₯μ κ°μ§ κ°μ²΄λ₯Ό μ΄μΉνλ κ°λ
μ°λ¦¬λ κ°μ²΄λ₯Ό λ¨Όμ μΈμνκ³ κ·Έ κ°μ²΄κ° κ°μ§ νΉμ±μ λ°λΌ λΆλ₯λ₯Ό ν΅ν΄ ν΄λμ€λ₯Ό μΈμνκ² λλ€.
νμ§λ§ μ¬λ¬Όμ μ°½μ‘°μ£Όλ "μλ΄"κ³Ό "μ΄λΈ"λΌλ κ°μ²΄λ₯Ό λ§λ€κΈ° μ μ ν΄λμ€λΌλ κ°λ μ λ¨Όμ λ§λ€μμ κ²μ΄λ€.
μ°λ¦¬λ κ°μ²΄ μ§ν₯μμλ ν΄λΉ μ ν리μΌμ΄μ μ μ°½μ‘°μ£Όκ° λλ€.
μ ν리μΌμ΄μ κ°λ°μλ ν΄λμ€λ₯Ό μ€κ³νκΈ° μν΄ νμν 물체μ 곡ν΅λ νΉμ±μ νμ νλ€.
κ°λ°μκ° "μ¬λ ν΄λμ€"λ₯Ό λ§λ λ€λ©΄ "λ¨Ήλ€, μλ€, μΌνλ€, μΈλ€, μλ ₯, λͺΈλ¬΄κ², λμ΄ λ±" μ¬λ¬ 곡ν΅λ νΉμ±μ μ°Ύκ² λλ€.
νμ§λ§ κ³Όμ° "μ¬λ"μ λͺ¨λ νΉμ±μ λμ΄ν νμκ° μμκΉ??
κ°λ°μκ° νμν "μ¬λ"μ Context(μ ν리μΌμ΄μ κ²½κ³)μ λ°λΌ λ¬λΌμ§ μ μλ€.
λ³μ μ ν리μΌμ΄μ -> μλ ₯, λͺΈλ¬΄κ² μ 보λ μ μνλ€. λ±μ κΈ°λ₯μ΄ νμνλ€.
μν μ ν리μΌμ΄μ - > μλ ₯, λͺΈλ¬΄κ² μ 보λ νμμκ³ λμ΄, μ°λ΄μ΄λ μ΄μ²΄νλ€. λμΆνλ€. λ±μ κΈ°λ₯μ΄ νμνλ€.
κ²°κ΅, IT κ΄μ μ
μΆμνλ ꡬ체μ μΈ κ²μ λΆν΄ν΄μ κ΄μ¬ μμ(μ ν리μΌμ΄μ κ²½κ³)μ μλ νΉμ±λ§ κ°μ§κ³ μ¬μ‘°ν©νλ κ²μ λ§νλ€. (λͺ¨λΈλ§)
-> μλ°λ μ΄λ¬ν κ°μ²΄ μ§ν₯μ μΆμνλ₯Ό "class ν€μλ"λ₯Ό ν΅ν΄ μ§μνκ³ μλ€.
ν΄λμ€ λ©€λ² - κ°μ²΄ λ©€λ²
ν΄λμ€ λ³μλ ν΄λΉ ν΄λμ€μ λͺ¨λ κ°μ²΄κ° κ°μ κ°μ κ°μ§ λ μ¬μ©νλ κ²μ΄ κΈ°λ³Έμ΄λ€.
ν΄λμ€ λ©μλλ κ°μ²΄λ€μ μ‘΄μ¬ μ¬λΆμ κ΄κ³μμ΄ μΈ μ μλ λ©μλμ΄λ€. ex) Mathμ κ°μ μ νΈλ¦¬ν°μ± λ©μλ
μμ: μ¬μ¬μ© + νμ₯
μμμ κ³μΈ΅μ μΈ κ°λ μ΄ μλ "μ¬μ¬μ©κ³Ό νμ₯"μΌλ‘ μ΄ν΄νλ κ²μ΄ λ§λ€!
λΆλͺ¨-μμ κ°μ κ΄κ³ (X)
-> λλ¬Όμ ν¬μ λ₯μ λΆλͺ¨κ° λ μ μλ€. λλ¬Όμ μ’ λ μΈλΆνν΄μ ν¬μ λ₯κ° λμ¬ μ μλ€.
**μμμ κ³μΈ΅λκ° μλ λΆλ₯λμ΄λ€**
λΆλͺ¨ν΄λμ€ - μμν΄λμ€ (x)
μνΌν΄λμ€ - μλΈν΄λμ€ (o)
μμ ν΄λμ€λ‘ κ°μλ‘ μΆμν/μΌλ°νκ° λκ³ νμ ν΄λμ€λ‘ κ°μλ‘ κ΅¬μ²΄ν/νΉμνκ° μ§νλλ€.
μμκ΄κ³μμ λ§μ‘±ν΄μΌλ§ νλ λ¬Έμ₯
- νμ ν΄λμ€λ μμ ν΄λμ€μ΄λ€. (리μ€μ½ν μΉν λ²μΉ)
μν¬λ μλΉ κ° λ μ μλ€. (μΌλ°ν λΆκ°)
νκ·μ λλ¬Όμ μν μ μνν μ μλ€. (μΌλ°ν κ°λ₯)
- 'is a' λ³΄λ¨ 'a kind of'
νκ·μ νλ§λ¦¬μ μ‘°λ₯μ΄λ€ λ³΄λ¨ νκ·μ μ‘°λ₯μ ν μ’ λ₯μ΄λ€.
μμμ κ°λ ₯ν¨
- μμμ ν΅ν΄ μ΅μμ ν΄λμ€ Objectμ νΉμ±μ λ¬Όλ €λ°μ toString() λ©μλλ₯Ό λͺ¨λ μλΈν΄λμ€μμ μ¬μ©κ°λ₯νλ€.
- ꡬ체νλ κ°μ²΄λ€μ νλμ μΌλ°νλ κ°λ μΌλ‘ μ¬μ©ν μ μλ€.
μλ°λ λ€μ€ μμμ λ€μ΄μλͺ¬λ λ¬Έμ λ‘ μΈν΄ λ€μ€μμμ λ²λ¦¬κ³ μΈν°νμ΄μ€λ₯Ό λμ νλ€.
μμκ³Ό μΈν°νμ΄μ€
μΈν°νμ΄μ€λ 'be able to'μ κ°μ΄ "무μμ ν μ μλ" ννλ‘ λ§λλ κ²μ΄ μ’λ€.
- μλ° API μμ
- Comparable μΈν°νμ΄μ€ : λΉκ΅ν μ μλ
- Runnable μΈν°νμ΄μ€ : μ€νν μ μλ
μΈν°νμ΄μ€λ ν΄λμ€κ° '무μμ ν μ μλ€'λΌλ κΈ°λ₯μ ꡬννλλ‘ "κ°μ "νκ² λλ€.
- ν΄μ¦
- μμ ν΄λμ€λ νμ ν΄λμ€μκ² λ¬Όλ €μ€ νΉμ±μ΄ λ§μμλ‘ μ’μκΉ?
- μΈν°νμ΄μ€λ ꡬνμ κ°μ ν λ©μλκ° λ§μμλ‘ μ’μκΉ?
리μ€μ½ν μΉν μμΉμ μν΄ μμ ν΄λμ€κ° νμ±ν μλ‘ μ’λ€.
μΈν°νμ΄μ€ λΆν μμΉμ μν΄ μΈν°νμ΄μ€ λ©μλλ μ μμλ‘ μ’λ€. (μμ μ μ± μμ΄ μλ κ²μ 맑μ μ μμΌλ―λ‘..)
λ€νμ±: μ¬μ©νΈμμ±
κ°μ²΄μ§ν₯μμ λ€νμ±μ΄λΌκ³ νλ©΄ "μ€λ²λΌμ΄λ©"κ³Ό "μ€λ²λ‘λ©"μ΄λΌκ³ ν μ μλ€.
-> νμ§λ§ "μ€λ²λ‘λ©"μ΄ λ€νμ±μΈμ§μ λν΄μλ μ΄κ²¬μ΄ μλ€.
μ€λ²λΌμ΄λ© : κ°μ λ©μλ μ΄λ¦, κ°μ μΈμ λͺ©λ‘μΌλ‘ μμ ν΄λμ€μ λ©μλλ₯Ό μ¬μ μ
μ€λ²λ‘λ© : κ°μ λ©μλ μ΄λ¦, λ€λ₯Έ μΈμ λͺ©λ‘μΌλ‘ λ€μμ λ©μλλ₯Ό μ€λ³΅ μ μ
Animal pingu = new Penguin();
μ μ½λμμ pinguμ showName() λ©μλλ₯Ό μ€ννλ©΄ Animal κ°μ²΄μ μν΄ μ μλ λ©μλκ° μλλΌ Penguin κ°μ²΄μ μν΄ μ¬μ μλ showName()λ©μλκ° μ€νλ¨μ κΈ°μ΅νμ.
-> μμ ν΄λμ€ νμ μ κ°μ²΄ μ°Έμ‘° λ³μλ₯Ό μ¬μ©νλλΌλ νμ ν΄λμ€μμ μ€λ²λΌμ΄λ©ν λ©μλκ° νΈμΆλλ€!!
μμ ν΄λμ€ μ°Έμ‘° λ³μλ‘ νμ ν΄λμ€κ° μ€λ²λΌμ΄λ©ν λ©μλλ₯Ό μ¬μ©ν μ μλ€.
λ€νμ±μ κ°λ°μκ° νλ‘κ·Έλ¨μ μμ±ν λ μ¬μ©νΈμμ±μ μ€λ€.
μΊ‘μν: μ 보 μλ
μ 보μλνλ©΄ μκ°λλ μ κ·Όμ μ΄μ -> private, pretected, public
- μμμ λ°μ§ μμλ€λ©΄ κ°μ²΄ λ©€λ²λ κ°μ²΄λ₯Ό μμ±ν ν μ°Έμ‘° λ³μλ₯Ό ν΅ν΄ μ κ·Όν κ²
- μ μ λ©€λ²λ ν΄λμ€λͺ .μ μ λ©€λ² νμμΌλ‘λ§ μ κ·Όνλ κ²μ κΆμ₯.
μ°Έμ‘° λ³μμ 볡μ¬
κΈ°λ³Έ μλ£ν λ³μ 볡μ¬μ μλ "Call by Value"μ μν΄ λ³΅μ¬λμ΄ λ κ°μ λ³μκ° μλ‘μκ² μν₯μ μ ν μ£Όμ§ μλλ€.
μ°Έμ‘° μλ£ν λ³μλ κ°μ μ£Όμ, μ¦ ν¬μΈν°λ‘ νλ¨νλ€.
κ²°κ΅, λ μλ£ν λͺ¨λ 볡μ¬μμ μμ μ΄ κ°μ§κ³ μλ κ°μ κ·Έλλ‘ λ³΅μ¬ν΄μ λ겨μ€λ€. κ·Έκ² κ°μ΄λ μ£Όμκ°μ΄λμ μ°¨μ΄μΌ λΏμ΄λ€.