- ν΄λμ€ μμ ν΄λμ€λ₯Ό μ€μ²©ν΄μ μ μν μ μλλ°, μ΄λ₯Ό μ€μ²© ν΄λμ€λΌκ³ νλ€.
Class class1 {
Class class2{
...
}
}
1. μ€μ²© ν΄λμ€μ λΆλ₯
- μ€μ²© ν΄λμ€μλ ν¬κ² λκ°μ§λ‘ λΆλ₯ν μ μλλ°, μ μ μ€μ²© ν΄λμ€(1κ°), λ΄λΆ ν΄λμ€(3κ°)κ° μ΄κ²μ΄λ€.
- μ€μ²© ν΄λμ€λ₯Ό μ μνλ μμΉλ λ³μμ μ μΈ μμΉμ κ°λ€.
- μ§μ ν΄λμ€λ μ§μ λ³μμ κ°μ΄ μ½λ λΈλ μμμ ν΄λμ€λ₯Ό μ μν μ μλ€.
Class class1 {
//μ μ μ€μ²© ν΄λμ€
static class StaticNested {
}
//λ΄λΆ ν΄λμ€
Class class2 {
}
Class LocalClass {
...
}
Local local = new Local();
}
- μ μ μ€μ²© ν΄λμ€λ λ°κΉ₯ ν΄λμ€μ μμ μμ§λ§ λ°κΉ₯ ν΄λμ€μ κ΄κ³κ° μ ν μλ λ€λ₯Έ ν΄λμ€λ₯Ό λ§νλ©°, λ΄λΆ ν΄λμ€λ λ°κΉ₯ ν΄λμ€μ λ΄λΆμ μμΌλ©΄μ λ°κΉ₯ ν΄λμ€λ₯Ό ꡬμ±νλ μμλ₯Ό λ§νλ€.
μ μ μ€μ²© ν΄λμ€ | λ΄λΆ ν΄λμ€ | |
νΉμ§ | - staticμ΄ λΆλλ€. - λ°κΉ₯ ν΄λμ€μ μΈμ€ν΄μ€μ μμλμ§ μλλ€. |
- staticμ΄ λΆμ§ μλλ€. - λ°κΉ₯ ν΄λμ€μ μΈμ€ν΄μ€μ μμλλ€. |
* λ΄λΆ ν΄λμ€ μ’ λ₯
- λ΄λΆ ν΄λμ€ : λ°κΉ₯ ν΄λμ€μ μΈμ€ν΄μ€μ λ§΄λ²μ μ κ·Ό
- μ§μ ν΄λμ€ : λ΄λΆ ν΄λμ€μ νΉμ§ + μ§μ λ³μμ μ κ·Ό
- μ΅λͺ ν΄λμ€ : μ§μ ν΄λμ€μ νΉμ§ + ν΄λμ€μ μ΄λ¦μ΄ μλ νΉλ³ν ν΄λμ€
* μ€μ²© ν΄λμ€λ₯Ό μ¬μ©νλ μ΄μ
- λ Όλ¦¬μ κ·Έλ£Ήν : νΉμ ν΄λμ€κ° νλμ ν΄λμ€ μμμλ§ μ¬μ©λλ κ²½μ°
- μΊ‘μν : μ€μ²© λ°κΉ₯ ν΄λμ€λ private λ§΄λ²λ‘ μ κ·Ό κ°λ₯, μ΄λ₯Ό ν΅ν΄ κΈ΄λ°νκ² μ°κ²°ν μ μλ€.
2. μ μ μ€μ²© ν΄λμ€
- μμ μ λ©€λ²μλ μ κ·Ό κ°λ₯
- λ°κΉ₯ ν΄λμ€μ μΈμ€ν΄μ€ λ©€λ²μλ μ κ·Ό λΆκ°λ₯
- λ°κΉ₯ ν΄λμ€μ ν΄λμ€ λ©€λ²μλ μ κ·Ό κ°λ₯ (privateλ κ°λ₯)
3. λ΄λΆ ν΄λμ€
- μμ μ λ©€λ²μ μ κ·Ό κ°λ₯
- λ°κΉ₯ ν΄λμ€μ μΈμ€ν΄μ€ λ©€λ²μ μ κ·Ό κ°λ₯
- λ°κΉ₯ ν΄λμ€μ ν΄λμ€ λ©€λ²μλ μ κ·Ό κ°λ₯
//μμ±λ°©λ²
InnerOuter outer = new InnerOuter();
IntterOuter.Inner inner = outer.new Inner();
- λ°κΉ₯ ν΄λμ€μμ λ΄λΆ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±ν λλ λ°κΉ₯ ν΄λμ€ μ΄λ¦μ μλ΅ν μ μλ€.
- λ°κΉ₯ ν΄λμ€μμ λ΄λΆ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±ν λ λ΄λΆ ν΄λμ€μ μΈμ€ν΄μ€λ μμ μ μμ±ν λ°κΉ₯ ν΄λμ€μ΄ μΈμ€ν΄μ€λ₯Ό μλμΌλ‘ μ°Έμ‘°νλ€.
4. κ°μ μ΄λ¦μ λ°κΉ₯ λ³μ μ κ·Ό
- λ³μμ μ΄λ¦μ΄ κ°μ λμλ μ°μ μμμ λ°λΌ μΆλ ₯λλ€.
public class Outer {
public int value = 1;
class Inner{
public int value = 2;
vold go(){
int value = 3;
}
}
}
- μ½λκ° μμ κ°μ λ μ²μ valueλ₯Ό μ‘°ννλ©΄ 3μ΄ λμ¨λ€. (μ§μλ³μ μ΄κΈ° λλ¬Έ)
- value = 2λ₯Ό μ κ·ΌνκΈ° μν΄μλ this.value λ₯Ό μ¬μ©νλ©΄ λλ€. (λ΄λΆ ν΄λμ€)
- value = 1μ μ κ·ΌνκΈ° μν΄μλ Outer.valueλ₯Ό μ κ·Όνλ©΄ λλ€. (λ°κΉ₯ ν΄λμ€)
- μ΄λ¦μ΄ κ°μ건 λ³γΉ μ’μ§ μμ μ½λμ
5. μ§μ ν΄λμ€
- μ§μ ν΄λμ€λ λ΄λΆ ν΄λμ€μ ν μ’ λ₯μ΄λ©° λλ¬Έμ μ½λ λΈλ μμμ μ μλλ€.
- μ§μ ν΄λμ€λ μ§μ λ³μμ μ κ·Όν μ μλ€λ νΉμ§μ΄ μλ€.
1) μ§μ ν΄λμ€μ μ κ·Ό λ²μ
- μμ μ μΈμ€ν΄μ€ λ³μμΈ value μ κ·Ό κ°λ₯
- μμ μ΄ μν μ½λ λΈλ¦μ μ§μλ³μ μ κ·Ό κ°λ₯
- μμ μ΄ μν μ½λ λΈλμ λ§€κ°λ³μ μ κ·Ό κ°λ₯
- λ°κΉ₯ ν΄λμ€μ μΈμ€ν΄μ€ λ§΄λ²μλ μ κ·Ό κ°λ₯
- μ κ·Ό μ μ΄μ (private) μ¬μ© λΆ
6. μ§μ ν΄λμ€ - μ§μ λ³μ μΊ‘μ³
* λ³μμ μλͺ μ£ΌκΈ°
- ν΄λμ€ λ³μ : νλ‘κ·Έλ¨ μ’ λ£ κΉμ§λ‘ κ°μ₯ κΈΈλ€(λ©μλ μμ)
- μΈμ€ν΄μ€ λ³μ : μΈμ€ν΄μ€μ μμ‘΄ κΈ°κ°(ν μμ)
- μ§μ λ³μ : λ©μλμ νΈμΆμ΄ λλλ©΄ μ¬λΌμ§(μ€ μμ)
- μ§μ ν΄λμ€λ μ§μ λ³μμ μ κ·Όν μ μμ§λ§, μ§μ λ³μμ μλͺ μ£ΌκΈ°λ μ§§κ³ μ§μ ν΄λμ€λ₯Ό ν΅ν΄ μμ±ν μΈμ€ν΄μ€μ μλͺ μ£ΌκΈ°λ κΈΈλ€λ λ¬Έμ κ° μλ€.
1) μ§μ λ³μ μΊ‘μ³
- μμ κ°μ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μλ°μμ μ§μ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±νλ μμ μ νμν μ§μ λ³μλ₯Ό 볡μ¬ν΄μ μμ±ν μΈμ€ν΄μ€μ ν¨κ» λ£μ΄λλ€.
* μΊ‘μ³ κ³Όμ
1. LocalPrinter μΈμ€ν΄μ€ μμ± μλ : μ§μ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±ν λ μ§μ ν΄λμ€κ° μ κ·Όνλ μ§μ λ³μλ₯Ό νμΈ
2. μ¬μ©νλ μ§μ λ³μ λ³΅μ¬ : μ§μ ν΄λμ€κ° μ¬μ©νλ μ§μ λ³μλ₯Ό 볡μ¬(λ§€κ°λ³μλ μ§μ λ³μμ ν μ’ λ₯)
3. μ§μ λ³μ λ³΅μ¬ μλ£ : 볡μ¬ν μ§μ λ³μλ₯Ό μΈμ€ν΄μ€μ ν¬ν¨νλ€.
4. μΈμ€ν΄μ€ μμ± μλ£ : 볡μ¬ν μ§μ λ³μλ₯Ό ν¬ν¨ν΄μ μΈμ€ν΄μ€ μμ±μ΄ μλ£λλ€.
- LocalPrint μΈμ€ν΄μ€μμ print()λ₯Ό ν΅ν΄ ParamVar, localVar μ κ·Όμ μ€ν μμμ μλ μ§μ λ³μμ μ κ·Όνλ κ²μ΄ μλ, μΈμ€ν΄μ€μ μλ μΊ‘μ³ν λ³μμ μ κ·Όνλ κ²μ΄λ€.
- μΊ‘μ³λ Valλ€μ μλͺ μ£ΌκΈ°λ LocalPrinerμΈμ€ν΄μ€μ μλͺ μ£ΌκΈ°μ κ°κΈ° λλ¬Έμ μΈμ€ν΄μ€ μλͺ μ£ΌκΈ°κ° λ€λ₯Έ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ€.
- μ§μ ν΄λμ€κ° μ κ·Όνλ μ§μ λ³μλ μ λλ‘ κ°μ΄ μ€κ°μ λ³κ²½λλ©΄ μλλ€ (final)
7. μ΅λͺ ν΄λμ€
- μ§μ ν΄λμ€μ νΉλ³ν μ’ λ₯ μ€ νλλ‘ μ΄λ¦μ΄ μλ€λ κ²μ΄ νΉμ§μ΄λ€.
- μ΅λͺ ν΄λμ€λ ν΄λμ€μ μ μΈκ³Ό μμ±μ νλ²μ μ²λ¦¬ν μ μλ€.
Printer printer = new Printer(){
//body
}
- μ΅λͺ ν΄λμ€λ ν΄λμ€μ body μ μνλ©΄μ λμμ μμ±λλ€.
* μ΅λͺ ν΄λμ€ νΉμ§
- μ΄λ¦ μλ μ§μ ν΄λμ€λ₯Ό μ μΈνλ©΄μ λμμ μμ±νλ€.
- μ΅λͺ ν΄λμ€λ λΆλͺ¨ ν΄λμ€λ₯Ό μμλ°κ±°λ, μΈν°νμ΄μ€λ₯Ό ꡬνν΄μΌ νλ€.
- μ΄λ¦μ κ°μ§μ§ μκΈ° λλ¬Έμ μμ±μ¦λ₯Ό κ°μ§ μ μλ€ (κΈ°λ³Έ μμ±μλ§ μ¬μ©)
* μ΅λͺ ν΄λμ€μ μ₯μ
- ν΄λμ€λ₯Ό λ³λλ‘ μ μνμ§ μκ³ λ μΈν°νμ΄μ€λ μΆμ ν΄λμ€λ₯Ό ꡬνν μ μμ΄μ μ½λκ° λ κ°κ²°ν΄μ§λ€.
- μ§μ ν΄λμ€κ° μΌνμ±μΌλ‘ μ¬μ©λλ κ²½μ°λ κ°λ¨ν ꡬνμ μ 곡ν λ μ¬μ©νλ€.
* μλ°8 μ΄μ κΉμ§ λ©μλμ μΈμλ‘ μ λ¬ν μ μλ κ²μ ν¬κ² 2κ°μ§ (κΈ°λ³Έν, μ°Έμ‘°ν)
* μλ°8 μ΄νλΆν° ν¨μλ₯Ό μΈμλ‘ μ λ¬ν μ μκ² λμλλ° μ΄κ±Έ λλ€λΌκ³ νλ€.
- μ°Έκ³ : κΉμνμ μ€μ μλ° - μ€κΈ 1νΈ
λκΈ