Item 24. Nested Class
λ©€λ² ν΄λμ€λ λλλ‘ staticμΌλ‘ λ§λ€λΌ.
μ°μ μ€μ²© ν΄λμ€(nested class)μ λν΄ κ°λ¨ν μ λ¦¬ν΄ λ³΄μλ©΄ λ€λ₯Έ ν΄λμ€ μμ μ μλ ν΄λμ€λ₯Ό λ§νλ€. μ€μ²© ν΄λμ€μ μ’ λ₯λ μλμ κ°μΌλ©°, μ μ λ©€λ² ν΄λμ€λ₯Ό μ μΈν λλ¨Έμ§λ λ΄λΆ ν΄λμ€(inner class)μ ν΄λΉνλ€.
μ μ λ©€λ² ν΄λμ€
(λΉμ μ )λ©€λ² ν΄λμ€
μ΅λͺ ν΄λμ€
μ§μ ν΄λμ€
μ€μ²© ν΄λμ€λ μμ μ κ°μΌ λ°κΉ₯ ν΄λμ€μμλ§ μ°μ¬μΌ νλ©°, κ·Έ μΈμ μ°μμκ° μλ€λ©΄ ν±λ 벨 ν΄λμ€λ‘ λ§λ€μ΄μΌ νλ€.
1. μ μ λ©€λ² ν΄λμ€
μ μ λ©€λ² ν΄λμ€λ κΈ°λ³Έμ μΌλ‘ μΌλ° ν΄λμ€μ λμΌνλ©°, μλμ κ°μ νΉμ§μ΄ μλ€.
λ°κΉ₯ ν΄λμ€μ private λ©€λ²μλ μ κ·Ό κ°λ₯
λ€λ₯Έ μ μ λ©€λ²μ κ°μ μ κ·Ό κ·μΉμ μ μ©λ°μ(privateμΈ κ²½μ° λ°κΉ₯ ν΄λμ€μμλ§ μ κ·Ό κ°λ₯)
μ μ λ©€λ² ν΄λμ€λ νν λ°κΉ₯ ν΄λμ€μ ν¨κ» μ°μΌ λλ§ μ μ©ν public λμ°λ―Έ ν΄λμ€λ‘ μ°μΈλ€.
μλ₯Ό λ€λ©΄ Calculator ν΄λμ€μ Operator μ΄κ±° νμ
μ public μ μ λ©€λ² ν΄λμ€λ‘ λ§λ€μ΄ Calculator.Operator
λ‘ μ¬μ©ν μ μλ€.
2. (λΉμ μ )λ©€λ² ν΄λμ€
static
μ°¨μ΄ νλμ§λ§ μλ―Ένλ λ°κ° μ ν λ€λ₯΄κ³ , λ°κΉ₯ ν΄λμ€μ λΉμ μ λ©€λ² ν΄λμ€μ κ΄κ³λ λ©€λ² ν΄λμ€κ° μΈμ€ν΄μ€ν λ λ ν립λκ³ , ν΄λΉ κ΄κ³λ₯Ό λ³κ²½ν μ μλ€.
λ°κΉ₯ ν΄λμ€μ μΈμ€ν΄μ€μ μ묡μ μΌλ‘ μ°κ²°λκΈ° λλ¬Έμ μλμ κ°μ μ°¨μ΄κ° μλ€.
λΉμ μ λ©€λ² ν΄λμ€μ μΈμ€ν΄μ€ λ©μλμμ μ κ·νλ this(
OuterClass.this
)λ₯Ό μ¬μ©ν΄ λ°κΉ₯ μΈμ€ν΄μ€μ λ©μλλ₯Ό νΈμΆνκ±°λ λ°κΉ₯ μΈμ€ν΄μ€μ μ°Έμ‘° κ°λ₯λ°κΉ₯ μΈμ€ν΄μ€μ λ 립μ μΌλ‘ μ‘΄μ¬ν μ μμΌλ©°, λ°κΉ₯ μΈμ€ν΄μ€ μμ΄ μμ±ν μ μμ
λ°κΉ₯ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°νλ κ΄κ³ μ λ³΄κ° λΉμ μ λ©€λ² ν΄λμ€μ μΈμ€ν΄μ€ μμ μ μ₯λμ΄ λ©λͺ¨λ¦¬ κ³΅κ° μ°¨μ§ λ° μμ± μκ° μΆκ° μμ
μΌλ°μ μΌλ‘ λ°κΉ₯ ν΄λμ€μ μΈμ€ν΄μ€ λ©μλμμ λΉμ μ λ©€λ² ν΄λμ€μ μμ±μλ₯Ό νΈμΆνμ§λ§, new OuterClass().new InnerClass();
μ κ°μ΄ μ§μ μμ±ν μλ μλ€.
λΉμ μ λ©€λ² ν΄λμ€λ μ΄λ€ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό κ°μΈ λ§μΉ λ€λ₯Έ ν΄λμ€μ μΈμ€ν΄μ€μ²λΌ 보μ΄κ² νλ λ·°λ‘ μ¬μ©νλ μ΄λν°λ₯Ό μ μν λ μμ£Ό μ°μΈλ€.
μ΄μ²λΌ λΉμ μ λ©€λ² ν΄λμ€λ λ°κΉ₯ ν΄λμ€μ μΈμ€ν΄μ€μ μ°Έμ‘°κ° λλ νΉμ§μ΄ μλ€. μ΄λ μ₯μ μ΄ λ μ μμ§λ§ νμ©νμ§ μλλ€λ©΄ λ©λͺ¨λ¦¬ 곡κ°μ μ°¨μ§νκ³ μμ± μκ°μ΄ μΆκ° μμλλ λ¨μ μ΄ λ μ μμΌλ©° κ°λΉμ§ 컬λ μ μ΄ λ°κΉ₯ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μκ±°νμ§ λͺ»νλ λ©λͺ¨λ¦¬ λμκ° λ°μν μ μλ€. λ§μ½ λΉμ μ λ©€λ² ν΄λμ€λ‘ λ°κΉ₯ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°νμ§ μλλ€λ©΄ μ μ λ©€λ² ν΄λμ€λ‘ λ§λλ κ²μ΄ μ’λ€.
3. μ΅λͺ
ν΄λμ€
μ΅λͺ ν΄λμ€λ μ΄λ¦μ΄ μλ ν΄λμ€λ‘, ν΄λμ€μ μ μΈκ³Ό μΈμ€ν΄μ€ μμ±μ λμμ νμ¬ κ°νΈνκ² μ¬μ©ν μ μμ§λ§ μλμ κ°μ μ μ½μ΄ μλ€.
μ΄λ¦μ΄ μμ΄
instanceof
κ°μ ν΄λμ€ μ΄λ¦μ΄ νμν μμ μ μνν μ μμλΉμ μ μΈ λ¬Έλ§₯μμλ§ λ°κΉ₯ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°ν μ μμΌλ©°, μ μ λ¬Έλ§₯μμλ μμ λ³μ μ΄μΈμ μ μ λ©€λ²λ₯Ό κ°μ§ μ μμ
μ¬λ¬ μΈν°νμ΄μ€λ₯Ό ꡬνν μ μμ
μΈν°νμ΄μ€λ₯Ό ꡬννλ λμμ λ€λ₯Έ ν΄λμ€λ₯Ό μμν μ μμ
볡μ‘ν μ½λλ κ°λ μ± μ ν
μ΅λͺ ν΄λμ€λ μ£Όλ‘ ν¨μ κ°μ²΄λ₯Ό λ§λ€ λ μ¬μ©νμ§λ§, μλ° 8λΆν°λ λλ€λ₯Ό μ¬μ©ν μ μκΈ° λλ¬Έμ κ·Έ μν μ λλ€λ‘ λ체λμλ€. λ€λ₯Έ μ©λλ‘λ μλμ κ°μ΄ μ μ ν©ν°λ¦¬ λ©μλλ₯Ό ꡬνν λ μ¬μ©ν μ μλ€.
4. μ§μ ν΄λμ€
κ°μ₯ λλ¬Όκ² μ¬μ©λλ λ°©μμΌλ‘, μ§μ λ³μλ₯Ό μ μΈν μ μλ κ³³μ΄λ©΄ μ΄λμλ μ μΈν μ μμΌλ©° μ ν¨ λ²μλ μ§μ λ³μμ κ°λ€.
λ©€λ² ν΄λμ€μ²λΌ μ΄λ¦μ΄ μμΌλ©°, λ°λ³΅ν΄μ μ¬μ© κ°λ₯
μ΅λͺ ν΄λμ€μ²λΌ λΉμ μ λ¬Έλ§₯μμ μ¬μ©λ λλ§ λ°κΉ₯ μΈμ€ν΄μ€ μ°Έμ‘° κ°λ₯
μ μ λ©€λ²λ κ°μ§ μ μμ
κ²°λ‘
μ€μ²© ν΄λμ€λ μμ κ°μ΄ λ€ κ°μ§ λ°©μμ΄ μ‘΄μ¬νλλ°, νΉμ§μ΄ λͺ¨λ λ€λ₯΄κΈ° λλ¬Έμ μν©λ³ μ μ ν λ°©λ²μ μλμ κ°μ΄ μ 리ν μ μλ€.
λ©μλ λ°μμλ μ¬μ©ν΄μΌνκ±°λ λ©μλ μμμ μ μνκΈ°μ λ무 κΈ΄ κ²½μ° -> λ©€λ² ν΄λμ€λ‘ μ μ
λ©€λ² ν΄λμ€μ μΈμ€ν΄μ€ κ°κ°μ΄ λ°κΉ₯ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°νλ κ²½μ° -> λΉμ μ λ©€λ² ν΄λμ€λ‘ μ μ
κ·Έ μΈμ κ²½μ° -> μ μ λ©€λ² ν΄λμ€λ‘ μ μ
ν λ©μλ μμμλ§ μ¬μ©λκ³ , ν΄λΉ μΈμ€ν΄μ€λ₯Ό μμ±νλ μ§μ μ΄ λ¨ ν κ³³μ΄λ©°, ν΄λΉ νμ μΌλ‘ μ°κΈ°μ μ ν©ν ν΄λμ€λ μΈν°νμ΄μ€κ° μ΄λ―Έ μλ κ²½μ° -> μ΅λͺ ν΄λμ€λ‘ μ μ
μμ ν΄λΉνμ§ μλ κ²½μ° -> μ§μ ν΄λμ€λ‘ μ μ
Last updated
Was this helpful?