μμ νμμ±
- ν΄λμ€ μ€λ³΅ μμ± μ κ±° κ°κ²°ν
- ν΄λμ€ κ³μΈ΅λ³ κ΄λ¦¬ μ©μ΄
- ν΄λμ€ μ¬μ¬μ©/νμ₯μ ν΅ν μμ°μ± ν₯μ
μμ - extends ν€μλ
class ColorPoint extends Point { }
- μλΈ ν΄λμ€μμ μνΌν΄λμ€ μ κ·Ό κ°λ₯(privateλ©€λ² μ μΈ)
μμ νΉμ§
- λ€μ€ μμ μ§μ XX (μΈν°νμ΄μ€λ κ°λ₯)
- ogject ν΄λμ€λ₯Ό μλμΌλ‘ μμ λ°λλ€. μ μΌνκ² μνΌν΄λμ€λ₯Ό κ°μ§μ§ μλ ν΄λμ€.
μνΌ/μλΈ ν΄λμ€μ μμ±μ
- νΈμΆμ μλΈν΄λμ€κ° λ¨Όμ , μ€νμ μνΌν΄λμ€ μμ±μκ° λ¨Όμ
- μνΌ/μλΈ μμ±μ λλ€ μ€νλ¨
μνΌ/μλΈ ν΄λμ€μ μμ±μ μ ν (묡μμ
- μλΈν΄λμ€μ μμ±μκ° μνΌ ν΄λμ€ μμ±μλ‘ κΈ°λ³Έ μμ±μ μ νλ¨ (by μλ°μ»΄νμΌλ¬)
μνΌ/μλΈ ν΄λμ€μ μμ±μ μ ν (λͺ μμ
super() : μνΌν΄λμ€ μμ±μμ νΈμΆ (첫μ€μ μμΌν¨)
μΊμ€ν
νμ λ³ν
μ μΊμ€ν
μλΈν΄λμ€ -> μνΌν΄λμ€ νμ μΌλ‘ λ³νλλ κ²
μνΌν΄λμ€ λ νΌλ°μ€κ° μλΈ ν΄λμ€ κ°μ²΄λ₯Ό κ°λ¦¬ν€λλ‘ μΉννλ κ²
Person p;
Student s = new Student();
p = s;
- μνΌν΄λμ€μ λ©€λ²λ§ μ κ·Ό κ°λ₯
- μμ±μ΄ μ κΉ κ°λ €μ Έμμ, λ€μ΄μΊμ€ν μ 볡ꡬ κ°λ₯
- λͺ μμ νμ λ³νμ νμ§μμλλλ€. p =(Person) s;
λ€μ΄μΊμ€ν
μ μΊμ€ν λ κ²μ μλλλ‘ λλ리λ κ²
Person p = new Student();
- λͺ μμ νμ λ³ν νμ !! Student s = (Student)p;
instanceof μ°μ°μ (μ΄ν μ°μ°μ)
κ°μ²΄μ μ§μ§ ν΄λμ€ νμ ꡬλΆμ μν μ°μ°μ
κ°μ²΄λ νΌλ°μ€ instanceof ν΄λμ€νμ ⇒ T or F λ‘ λ°ν
λ©μλ μ€λ²λΌμ΄λ©
μνΌν΄λμ€μ μ μΈλ λ©μλλ₯Ό μ€λ³΅ μμ±νμ¬ μνΌν΄λμ€ λ©μλλ₯Ό 무λ ₯ν
- @Override νκΈ°
- νμ μλΈν΄λμ€μ μ€λ²λΌμ΄λ©ν λ©μλκ° μ€νλ¨
- μ΄λ¦, 리ν΄νμ , 맀κ°λ³μ리μ€νΈ λͺ¨λ κ°λλ‘ μμ±
μ€λ²λΌμ΄λ© λͺ©μ (λ€νμ± μ€ν)
- νλμ μΈν°νμ΄μ€μ μλ‘ λ€λ₯Έ λ΄μ© ꡬν
λμ λ°μΈλ©
μ€νν λ©μλλ₯Ό μ»΄νμΌμ κ²°μ νμ§ μκ³ runtime μ€νμ κ²°μ νλ κ²
μ€λ²λΌμ΄λ© λ λ©μλκ° νμμ€ν!! λλλ‘ λ³΄μ₯νλ€.
μ μ λ°μΈλ© - super ν€μλ
super ν€μλλ₯Ό μ΄μ©ν΄μ μνΌ ν΄λμ€ λ©€λ²μ μ κ·Ό κ°λ₯.
μ€λ²λ‘λ© / μ€λ²λΌμ΄λ©
μ€λ²λ‘λ© - ν ν΄λμ€/μμ κ΄κ³μ μλ ν΄λμ€μ 맀κ°λ³μ νμ -κ°μκ° λ€λ₯Έ μ¬λ¬κ°μ λ©μλκ° κ°μ μ΄λ¦μΌλ‘ μλ κ² ( μ€λ³΅ μμ±)
μ€λ²λΌμ΄λ© - μνΌν΄λμ€μ λ©μλ(μ΄λ¦,νμ λ±)λ₯Ό λμΌνκ² μλΈν΄λμ€μ κ°μ Έμ μ¬μ μν κ² (μ¬μμ±)
μΆμ λ©μλ (= λ°κ·Έλ¦Ό)
abstract ν€μλ + μνλ§ μ μΈ (λ©μλμ ν€λλ§)
μΆμ ν΄λμ€
- μΆμ λ©μλλ₯Ό μ΅μ νκ° κ°μ§κ³ abstract λ‘ μ μΈλ ν΄λμ€ → 무쑰건 μΆμ ν΄λμ€λ‘ μ μΈλμ΄μΌνλ€.
- μΆμ λ©μλκ° μμ΄λ abstract λ‘ μ μΈλ ν΄λμ€
- μΆμ ν΄λμ€μ μΈμ€ν΄μ€(κ°μ²΄) μμ± λΆκ° → μ»΄νμΌ μ€λ₯
μΆμν΄λμ€ μμ
- μΆμ ν΄λμ€(μΆμλ©μλ 보μ )λ₯Ό μμ λ°μΌλ©΄
- μλΈν΄λμ€λ μλμΌλ‘ μΆμ ν΄λμ€ (μΆμλ©μλλ₯Ό λ°κΈ°λλ¬Έ)
- μ¦ , μλΈν΄λμ€μ abstract λ₯Ό λͺ μν΄μΌν¨
μΆμ ν΄λμ€ κ΅¬ν (= 본체 λ§λ€κΈ°)
- μλΈμμ μνΌμ λͺ¨λ μΆμ λ©μλλ₯Ό μ€λ²λΌμ΄λ© νμ¬ μ€ν κ°λ₯ν μ½λλ‘ κ΅¬ννλ κ²
- μλΈκ° μΆμ ν΄λμ€λ₯Ό ꡬννλ€λ©΄, μΈμ€ν΄μ€λ₯Ό λ§λ€ μ μλ€.
μΆμν΄λμ€ λͺ©μ (μλΈν΄λμ€ λ€νμ± μ€ν)
- μμμ μν μνΌν΄λμ€λ‘ νμ©νκΈ° μν κ² → μλΈκ° μμν ν΄λμ€ μν(λ°κ·Έλ¦Ό)μ μ 곡
μΈν°νμ΄μ€ - interface ν€μλ
μλ‘ λ€λ₯Έ νλμ¨μ΄ μ₯μΉλ€μ΄ μνΈ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ μ μλ κ·κ²©
ν΄λμ€λ₯Ό μ μΈνλ―μ΄ μ μΈνλ€.
- νλ(λ©€λ² λ³μ)λ₯Ό λ§λ€ μ μμ
- κ°μ²΄λ₯Ό μμ±ν μ μλ€ → μ€λ₯
μΈν°νμ΄μ€ λ©€λ² 5μ’ λ₯
- μμ
- μΆμλ©μλ (public abstract μλ΅ κ°λ₯, ν·κ°λ¦¬μ§μκ² μ£Όμ!)
- default λ©μλ (public μλ΅ κ°λ₯)
- private λ©μλ
- static λ©μλ
μΈν°νμ΄μ€ μμ - extends ν€μλ
- λ€λ₯Έ μΈν°νμ΄μ€λ₯Ό μμ ν μ μλ€.
- λ€μ€ μμ κ°λ₯ (, μ½€λ§λ‘ μ°κ²°)
μΈν°νμ΄μ€ ꡬν - impliments ν€μλ
- μΈν°νμ΄μ€μ λͺ¨λ μΆμ λ©μλλ₯Ό ꡬνν ν΄λμ€λ₯Ό μμ±νλ κ²