Section#13 _ λ΄λΆ ν΄λμ€
#1 λ΄λΆ ν΄λμ€λ?
: ν΄λμ€ μμ λ§λ€μ΄μ§ λ λ€λ₯Έ ν΄λμ€ == μ€μ²© ν΄λμ€
: λ ν΄λμ€ λ©€λ²λ€ κ°μ μμ½κ² μ κ·Ό κ°λ₯
: λΆνμν ν΄λμ€λ₯Ό κ°μΆ° μ½λμ 볡μ‘μ±μ μ€μΌ μ μμ
#2 λ΄λΆ ν΄λμ€μ μ’ λ₯
: μ μΈλ μμΉμ λ°λΌ ꡬλΆνλ©°, μΈμ€ν΄μ€, μ μ , μ§μ, μ΅λͺ ν΄λμ€λ‘ ꡬλΆ
λ©μλ | μ€λͺ | ||||||
μΈμ€ν΄μ€ | μΈλΆ ν΄λμ€μ λ©€λ² λ³μμ κ°μ μμΉμ μ μΈ → μΈλΆ ν΄λμ€μ λ©€λ² λ³μμ κ΄λ ¨λ μ§μ μ μ¬μ©λ λͺ©μ μΌλ‘ μ μΈ | ||||||
μ μ | μΈλΆ ν΄λμ€μ ν΄λμ€ λ³μμ κ°μ΄ static ν€μλ λΆμ¬ | ||||||
μ§μ | μΈλΆ ν΄λμ€ λ©μλ λ΄λΆμμ μ μΈνμ¬ μ¬μ© → λ©μλ λ΄λΆμμλ§ μ¬μ© κ°λ₯ |
#2-1 μΈμ€ν΄μ€ ν΄λμ€
: μΈμ€ν΄μ λ³μμ κ°μ μμΉμ μ μΈ, μΈλΆ ν΄λμ€μ μΈμ€ν΄μ€ λ©€λ²μ²λΌ λ€λ£¨μ΄μ§
: μ£Όλ‘ μΈλΆ ν΄λμ€μ μΈμ€ν΄μ€ λ©€λ²λ€κ³Ό κ΄λ ¨λ μμ μ μ¬μ©λ λͺ©μ μΌλ‘ μ μΈ
: μΈλΆ ν΄λμ€μ μΈμ€ν΄μ€ λ³μλ₯Ό μ¬μ©ν μ μμ§λ§, μ μ λ³μλ λ©μλλ₯Ό νΈμΆνλ 건 λΆκ°λ₯
: μΈμ€ν΄μ€ ν΄λμ€ μμ±
class Outer{
private String name;
...
class Inner{
private String name;
}
}
: μΈμ€ν΄μ€ ν΄λμ€ μ μΈ → μΈλΆ κ°μ²΄κ° μμ±λ μνμμ κ°μ²΄ μμ±μ ν μ μμ
Outer outer = new Outer();
Outer.Inner in = outer.new Inner();
#2-2 μ μ λ΄λΆ ν΄λμ€ (static class)
: static ν€μλλ₯Ό μ¬μ©ν΄ ν΄λμ€λ₯Ό μ μΈν ν μ μ λ΄λΆ ν΄λμ€ μμ±
: μΈλΆ ν΄λμ€μ static λ©μλμμ μ¬μ©λ λͺ©μ μΌλ‘ μ μΈ
: ν΄λμ€μ μνμ§λ§ λ 립μ μΌλ‘ μ‘΄μ¬
: μΈλΆ ν΄λμ€μ μ‘΄μ¬μ μκ΄μμ΄ μ μ λ³μ μ¬μ© κ°λ₯ → μΈλΆ ν΄λμ€μ μΈμ€ν΄μ€ λ³μ or λ©μλλ₯Ό μ μ λ΄λΆ ν΄λμ€μμ μ¬μ© λΆκ°
: μ μ λ΄λΆ ν΄λμ€ μμ± → μΈμ€ν΄μ€ λ©€λ²μ λμΌν μμΉ
class Outer{
private String name;
...
static class Inner{
private String name;
}
}
: μ μ λ΄λΆ ν΄λμ€ μ μΈ → μΈλΆ ν΄λμ€ κ°μ²΄λ₯Ό μ μΈνμ§ μμλ μ μΈ κ°λ₯
Outer.Inner in = new Outer.Inner();
#2-3 μ§μ ν΄λμ€ (local class)
: μΈλΆ ν΄λμ€μ λ©μλ λ΄μμ μ μΈλμ΄ μ¬μ© → λ©μλ λ΄μμλ§ μ¬μ© κ°λ₯, λ©μλμ μ€νμ΄ λλλ©΄ ν΄λΉ ν΄λμ€λ μ¬μ© μ’ λ£
: μ κ·Ό μ νμμ staticμ λΆμΌ μ μμ
: μ§μ ν΄λμ€ μμ±
class LocalClass{
...
void print(){
...
class A{
...
}
A a = new A();
}
}
#3 λ΄λΆ ν΄λμ€μ μ κ·Ό μ ν
#3-1 μ κ·Ό μ νμ
: μ κ·Ό μ νμλ₯Ό ν΅ν΄ μΈλΆμμμ μ κ·Ό μ ν κ°λ₯
: μΈμ€ν΄μ€ ν΄λμ€λ₯Ό privateμΌλ‘ μ μΈ → getter & setterλ₯Ό ν΅ν΄ ν΄λμ€λ₯Ό μ¬μ©νλλ‘ μ ν
#3-2 μ§μ ν΄λμ€μ μ κ·Ό μ ν
: λ©μλ λ΄μμ μ μΈλμ΄ μ¬μ©
: μ§μ ν΄λμ€μμ λ©μλ λ΄μ λ³μλ₯Ό μ¬μ©ν λλ λ³μλ₯Ό 볡μ¬ν΄ μ¬μ© → ν΄λΉ λ³μκ° λ³κ²½λλ©΄ μ€λ₯ λ°μ
#4 μ΅λͺ ν΄λμ€
: μ΄λ¦μ΄ μλ ν΄λμ€ → ν΄λμ€ μ μΈκ³Ό κ°μ²΄μ μμ±μ λμμ ν¨ → λ¨ νλ²λ§ μ¬μ© κ°λ₯ → νλμ κ°μ²΄λ§ μμ±ν μ μλ μΌνμ©
: μμ±μ μ μΈ λΆκ°λ₯, λ μ΄μμ μΈν°νμ΄μ€ ꡬν λΆκ°λ₯
: λ¨ νλμ ν΄λμ€ μμ or νλμ μΈν°νμ΄μ€ ꡬν
: μΈν°νμ΄μ€μ κΈ°λ₯μ ꡬνν λ μ¬μ© → μΈν°νμ΄μ€λ₯Ό μ΅λͺ ν΄λμ€λ‘ μ μΈνμ¬ κΈ°λ₯μ μ§μ ꡬν
: μΆμ ν΄λμ€ or μΈν°νμ΄μ€λ₯Ό μμμ ν΅ν΄ ꡬννμ§ μκ³ μ§μ ꡬνν λ μ£Όλ‘ μ¬μ©
→ μΆμ ν΄λμ€ or μΈν°νμ΄μ€λ ꡬνλμ§ μμ μΆμ λ©μλκ° μκΈ° λλ¬Έμ κ°μ²΄ μ μΈ λΆκ°λ₯
: μ΅λͺ ν΄λμ€ μ μΈ νμμ μ΄μ©νμ¬ μμ μμ΄ κ΅¬ν
: μ΅λͺ ν΄λμ€ μ μΈ → ν΄λμ€ μμ±μ λ€μ μ½λ λΈλ‘ μΆκ° → ν΄λΉ ν΄λμ€κ° κ°μ§ λ©μλλ€μ Override νμ¬ κ΅¬ν
// κ°μ²΄ μμ±
Person p = new Person();
@Override
void method(){
}
...
};
→ ν΄λμ€ μ체λ₯Ό μ¬μ μνμ¬ κ΅¬ν : ꡬνλ λ¬Έλ² λ§μ§λ§μ μΈλ―Έμ½λ‘ (;)