Ch.8 ν΄λμ€
πλ¬λ νμ μ€ν¬λ¦½νΈ ν΄λμ€ μ 리
8.1 ν΄λμ€ λ©μλ
νμ μ€ν¬λ¦½νΈλ λ 립 ν¨μ μ΄ν΄μ λμΌν λ°©μμΌλ‘ λ©μλλ₯Ό μ΄ν΄νλ€. 맀κ°λ³μ νμ μ νμ μ΄λ κΈ°λ³Έκ°μ μ§μ νμ§ μμΌλ©΄ κΈ°λ³Ένμ μΌλ‘ any κ° μ§μ λλ€. λ©μλλ₯Ό νΈμΆνλ €λ©΄ νμ© κ°λ₯ν μμ μΈμκ° νμνκ³ , μ¬κ· ν¨μκ° μλλΌλ©΄ λλΆλΆ λ°ν νμ μ μ μΆ κ°λ₯νλ€.
ν΄λμ€ μμ±μ constructorλ 맀κ°λ³μμ κ΄λ ¨ν΄ μ νμ μΈ ν΄λμ€ λ©μλμ²λΌ μ·¨κΈλλ€.
8.2 ν΄λμ€ μμ±
ν΄λμ€μ λν κΈ°λ³Έμ μΈλ΄μ©λ€...
νμ μ€ν¬λ¦½νΈμμ ν΄λμ€μ μμ±μ μ½κ±°λ μ°λ €λ©΄ λͺ μμ μΌλ‘ μ μΈν΄μΌ νλ€. ν΄λμ€ μμ±μ μΈν°νμ΄μ€μ λμΌν ꡬ문μ μ¬μ©ν΄ μ μΈνλ€. ν΄λμ€ μμ± μ΄λ¦ λ€μλ μ νμ μΌλ‘ νμ μ λν μ΄μ μ΄ λΆλλ€.
λͺ μμ μΌλ‘ ν΄λμ€ μμ±μ μ μΈνλ©΄ νμ μ€ν¬λ¦½νΈκ° λΉ λ₯΄κ² μ΄ν΄ν μ μλ€.
8.2.1 ν¨μ μμ±
μλ°μ€ν¬λ¦½νΈμλ ν΄λμ€ λ©€λ²λ₯Ό νΈμΆ κ°λ₯ν ν¨μλ‘ μ μΈνλ λκ°μ§ λ°©λ²μ΄ μλ€.
λ©μλλ‘ μ κ·Όνλ λ°©μκ³Ό νλ‘νΌν°λ‘ μ κ·Όνλ λ°©μ 2κ°μ§μΈλ°,
λ©μλ μ κ·Ό λ°©μμ ν¨μλ₯Ό ν΄λμ€ νλ‘ν νμ μ ν λΉνμ¬ λͺ¨λ ν΄λμ€ μΈμ€ν΄μ€μμ λμΌν ν¨μ μ μλ₯Ό μ¬μ©νλ λ°©μμ΄κ³ ,
νλ‘νΌν° μ κ·Ό λ°©μμ μΈμ€ν΄μ€λΉ μλ‘μ΄ ν¨μκ° μμ±λμ΄ μλ‘μ΄ ν¨μλ₯Ό μμ±νλ μκ°κ³Ό λ©λͺ¨λ¦¬ λΉμ© μΈ‘λ©΄μμ μ μ©ν λ°©μμ΄λ€.
8.2.2 μ΄κΈ°ν κ²μ¬
μ격ν μ»΄νμΌλ¬ μ€μ μ΄ νμ±νλ μνμμ νμ μ€ν¬λ¦½νΈλ undefined νμ μΌλ‘ μ μΈλ κ° μμ±μ΄ μμ±μμμ ν λΉλμλμ§ νμΈνλ€. μ΄μ κ°μ μ격ν μ΄κΈ°ν κ²μ¬λ ν΄λμ€ μμ±μ κ°μ λ―Έν λΉνλ μ€μλ₯Ό μλ°©ν μ μλ€.
λλΆλΆμ κ²½μ° μ격ν μ΄κΈ°ν κ²μ¬κ° μ μ©νμ§λ§ νμνμ§ μμ κ²½μ°λ μλ€. μ΄ λ μ΄λ¦ λ€μ !λ₯Ό μΆκ°ν΄ κ²μ¬λ₯Ό λΉνμ±ννλ©΄ νμ μ€ν¬λ¦½νΈμμ μμ±μ΄ μ¬μ©λκΈ° μ΄μ μ undefined κ°μ ν λΉνλ€.
8.2.3 μ νμ μμ±
μ΄λ¦ λ€μ ?λ₯Ό μΆκ°ν΄ μ νμ μμ±μ μ μΈν μ μλ€. | undefinedλ₯Ό ν¬ν¨νλ μ λμΈ νμ κ³Ό κ±°μ λμΌνκ² μλνλ€.
8.2.4 μ½κΈ° μ μ© μμ±
readonly ν€μλλ₯Ό μΆκ°ν΄ μ½κΈ° μ μ©μΌλ‘ μ μΈν μ μλ€.
8.3 νμ
μΌλ‘μμ ν΄λμ€
νμ μμ€ν μμ ν΄λμ€λ μλμ μΌλ‘ λ νΉνλ€. ν΄λμ€ μ μΈμ΄ λ°νμ κ°κ³Ό νμ μλν μ΄μ μμ μ¬μ© κ°λ₯ν νμ μ λͺ¨λ μμ±νλ€.
8.4 ν΄λμ€μ μΈν°νμ΄μ€
νμ μ€ν¬λ¦½νΈλ ν΄λμ€ μ΄λ¦ λ€μ implements ν€μλμ μΈν°νμ΄μ€ μ΄λ¦μ μΆκ°ν¨μΌλ‘μ¨ ν΄λμ€μ ν΄λΉ μΈμ€ν΄μ€κ° μΈν°νμ΄μ€λ₯Ό μ€μνλ€κ³ μ μΈν μ μλ€.
8.4.1 λ€μ€ μΈν°νμ΄μ€ ꡬν
νμ μ€ν¬λ¦½νΈμ ν΄λμ€λ λ€μ€ μΈν°νμ΄μ€λ₯Ό ꡬνν΄ μ μΈν μ μλ€. ν΄λμ€μ ꡬνλ μΈν°νμ΄μ€ λͺ©λ‘μ μΈν°νμ΄μ€ μ΄λ¦ μ¬μ΄μ μΌνλ₯Ό λ£κ³ , κ°μ μ ν μμ΄ μΈν°νμ΄μ€λ₯Ό μ¬μ©ν μ μλ€.
λ κ°μ μΆ©λνλ μΈν°νμ΄μ€λ₯Ό ꡬννλ ν΄λμ€λ₯Ό μ μΈνλ €νλ©΄ νμ μ€λ₯κ° λ°μνλ€.
λ μΈν°νμ΄μ€κ° λ€λ₯Έ κ°μ²΄ ννλ₯Ό νννλ κ²½μ°μλ λμΌ ν΄λμ€λ‘ ꡬννμ§ μμμΌ νλ€.
8.5 ν΄λμ€ νμ₯
νμ μ€ν¬λ¦½νΈλ ν΄λμ€λ₯Ό νμ₯νκ±°λ νμ ν΄λμ€λ₯Ό λ§λλ μλ°μ€ν¬λ¦½νΈ κ°λ μ νμ κ²μ¬λ₯Ό μΆκ°νλ€. κΈ°λ³Έ ν΄λμ€μ μ μΈλ λͺ¨λ λ©μλλ μμ±μ νμ ν΄λμ€λΌκ³ νλ νμ ν΄λμ€μμ μ¬μ© κ°λ₯νλ€.
8.5.1 ν λΉ κ°λ₯μ± νμ₯
νμ μΈν°νμ΄μ€κ° κΈ°λ³Έ μΈν°νμ΄μ€λ₯Ό νμ₯νλ κ²κ³Ό λ§μ°¬κ°μ§λ‘ νμ ν΄λμ€λ κΈ°λ³Έ ν΄λμ€μ λ©€λ²λ₯Ό μμνλ€. νμ ν΄λμ€μ μΈμ€ν΄μ€λ κΈ°λ³Έ ν΄λμ€μ λͺ¨λ λ©€λ²λ₯Ό κ°μ§λ―λ‘ κΈ°λ³Έ ν΄λμ€μ μΈμ€ν΄μ€κ° νμν λͺ¨λ κ³³μμ μ¬μ© κ°λ₯νλ€. λ§μ½ κΈ°λ³Έ ν΄λμ€μ νμ ν΄λμ€κ° κ°μ§κ³ μλ λ©€λ²κ° μλ€λ©΄ λ ꡬ체μ μΈ νμ ν΄λμ€κ° νμν λ μ¬μ© λΆκ°λ₯νλ€.
νμ μ€ν¬λ¦½νΈμ ꡬ쑰μ νμ μ λ°λΌ νμ ν΄λμ€μ λͺ¨λ λ©€λ²κ° λμΌ νμ μ κΈ°λ³Έ ν΄λμ€μ μ΄λ―Έ μ‘΄μ¬νλ κ²½μ° κΈ°λ³Έ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό νμ ν΄λμ€ λμ μ¬μ©ν μ μλ€.
8.5.2 μ¬μ μλ μμ±μ
νμ μ€ν¬λ¦½νΈμμ νμ ν΄λμ€λ μ체 μμ±μλ₯Ό μ μν νμ μλ€. μ묡μ μΌλ‘ κΈ°λ³Έ ν΄λμ€μ μμ±μλ₯Ό μ¬μ©νκΈ° λλ¬Έμ΄λ€.
μλ°μ€ν¬λ¦½νΈμμ νμ ν΄λμ€κ° μ체 μμ±μλ₯Ό μ μΈνλ©΄ super ν€μλλ₯Ό ν΅ν΄ κΈ°λ³Έ ν΄λμ€ μμ±μλ₯Ό νΈμΆν΄μΌ νλ€. νμ ν΄λμ€ μμ±μλ κΈ°λ³Έ ν΄λμ€μμμ νμ μ¬λΆμ μκ΄μμ΄ λͺ¨λ λ§€κ° λ³μλ₯Ό μ μΈ κ°λ₯νλ€. νμ κ²μ¬κΈ°λ κΈ°λ³Έ ν΄λμ€ μμ±μλ₯Ό νΈμΆν λ μ¬λ°λ₯Έ 맀κ°λ³μλ₯Ό μ¬μ©νλμ§ νμΈνλ€.
μλ°μ€ν¬λ¦½νΈ κ·μΉμ λ°λ₯΄λ©΄ νμ ν΄λμ€μ μμ±μλ this λλ superμ μ κ·ΌνκΈ° μ λ°λμ κΈ°λ³Έ ν΄λμ€μ μμ±μλ₯Ό νΈμΆν΄μΌ νλ€. λ°λΌμ νμ μ€ν¬λ¦½νΈλ super()λ₯Ό νΈμΆνκΈ° μ this λλ superμ μ κ·Όνλ €λ κ²½μ° νμ μ€λ₯λ₯Ό λ³΄κ³ νλ€.
8.5.3 μ¬μ μλ λ©μλ
νμ ν΄λμ€μ λ©μλκ° κΈ°λ³Έ ν΄λμ€μ λ©μλμ ν λΉλ μ μλ ν νμ ν΄λμ€λ κΈ°λ³Έ ν΄λμ€μ λμΌν μ΄λ¦μΌλ‘ μ λ©μλλ₯Ό λ€μ μ μΈν μ μλ€. κΈ°λ³Έ ν΄λμ€λ₯Ό μ¬μ©νλ λͺ¨λ κ³³μ νμ ν΄λμ€λ₯Ό μ¬μ©ν μ μμΌλ―λ‘ μ λ©μλμ νμ λ κΈ°λ³Έ λ©μλ λμ μ¬μ©ν μ μμ΄μΌ νλ€.
8.5.4 μ¬μ μλ μμ±
νμ ν΄λμ€λ μ νμ μ κΈ°λ³Έ ν΄λμ€μ νμ μ ν λΉν μ μλ ν λμΌν μ΄λ¦μΌλ‘ κΈ°λ³Έ ν΄λμ€μ μμ±μ λͺ μμ μΌλ‘ λ€μ μ μΈν μ μλ€. μ¬μ μλ λ©μλμ λ§μ°¬κ°μ§λ‘ νμ ν΄λμ€λ κΈ°λ³Έ ν΄λμ€μ ꡬ쑰μ μΌλ‘ μΌμΉν΄μΌ νλ€.
μμ±μ λ€μ μ μΈνλ λλΆλΆμ νμ ν΄λμ€λ ν΄λΉ μμ±μ μ λμΈ νμ μ λ ꡬ체μ μΈ νμ μ§ν©μΌλ‘ λ§λ€κ±°λ κΈ°λ³Έ ν΄λμ€ μμ± νμ μμ νμ₯λλ νμ μΌλ‘ λ§λ λ€.
μ λμΈ νμ μ νμ©λ κ° μ§ν©μ νμ₯ν μλ μλ€. νμ₯νλ€λ©΄ νμ ν΄λμ€ μμ±μ λ μ΄μ κΈ°λ³Έ ν΄λμ€ μμ± νμ μ ν λΉν μ μλ€.
8.6 μΆμ ν΄λμ€
λλ‘λ μΌλΆ λ©μλμ ꡬνμ μ μΈνμ§ μκ³ , λμ νμ ν΄λμ€μ ν΄λΉ λ©μλ μ 곡μ μμνκ³ κΈ°λ³Έ ν΄λμ€λ₯Ό λ§λλ λ°©λ²μ΄ μ μ©ν μ μλ€. μΆμννλ €λ ν΄λμ€ μ΄λ¦κ³Ό λ©μλ μμ νμ μ€ν¬λ¦½νΈμ abstract ν€μλλ₯Ό μΆκ°νλ€. μ΄λ¬ν μΆμν λ©μλ μ μΈμ μΆμν κΈ°λ³Έ ν΄λμ€μμ λ©μλμ λ³Έλ¬Έ μ 곡μ 건λλ°κ³ , λμ μΈν°νμ΄μ€μ λμΌν λ°©μμΌλ‘ μ μΈλλ€.
ꡬνμ΄ μ‘΄μ¬νλ€κ³ κ°μ ν μ μλ μΌλΆ λ©μλμ λν μ μκ° μκΈ°μ μΆμ ν΄λμ€λ₯Ό μ§μ μΈμ€ν΄μ€ν ν μ μλ€. μΆμ ν΄λμ€κ° μλ ν΄λμ€λ§ μΈμ€ν΄μ€ν κ°λ₯νλ€.
μΆμ ν΄λμ€λ ν΄λμ€μ μΈλΆ μ¬νμ΄ μ±μμ§ κ±°λΌ μμλλ νλ μμν¬μμ μμ£Ό μ¬μ©λλ€. ν΄λμ€λ κ°μ΄ ν΄λμ€λ₯Ό μ€μν΄μΌ ν¨μ λνλ΄λ νμ μ λν μ΄μ μΌλ‘ μ¬μ©ν μ μλ€. κ·Έλ¬λ μ μΈμ€ν΄μ€λ₯Ό μμ±νλ €λ©΄ νμ ν΄λμ€λ₯Ό μ¬μ©ν΄μΌ νλ€.
8.7 λ©€λ² μ κ·Όμ±
μλ°μ€ν¬λ¦½νΈμμλ ν΄λμ€ λ©€λ² μμ # μ μΆκ°ν΄ private ν΄λμ€ λ©€λ²μμ λνλΈλ€. private ν΄λμ€ λ©€λ²λ ν΄λΉ ν΄λμ€ μΈμ€ν΄μ€μμλ§ μ κ·Ό κ°λ₯νλ€. μλ°μ€ν¬λ¦½νΈ λ°νμμ ν΄λμ€ μΈλΆ μ½λ μμμμ private λ©μλλ μμ±μ μ κ·Όνλ €λ©΄ μ€λ₯λ₯Ό λ°μμν΄μΌλ‘μ¨ νλΌμ΄λ²μλ₯Ό κ°ννλ€.
νμ μ€ν¬λ¦½νΈμ ν΄λμ€ μ§μμ μλ°μ€ν¬λ¦½νΈμ # νλΌμ΄λ²μ λ³΄λ€ λ¨Όμ λ§λ€μ΄μ‘λ€. λν νμ μ€ν¬λ¦½νΈλ private ν΄λμ€ λ©€λ²λ₯Ό μ§μνμ§λ§, νμ μμ€ν μλ§ μ‘΄μ¬νλ ν΄λμ€ λ©μλμ μμ±μ λν΄ μ‘°κΈ λ λ―Έλ¬ν νλΌμ΄λ²μ μ μ μ§ν©μ νμ©νλ€. νμ μ€ν¬λ¦½νΈμ λ©€λ² μ κ·Όμ±(κ°μμ± visibility)μ ν΄λμ€ λ©€λ² μ μΈ μ΄λ¦ μμ λ€μ ν€μλ μ€ νλλ₯Ό μΆκ°ν΄ λ§λ λ€.
public λͺ¨λ κ³³μμ λꡬλ μ κ·Ό κ°λ₯
protected ν΄λμ€ λ΄λΆ λλ νμ ν΄λμ€μμλ§ μ κ·Ό κ°λ₯
private ν΄λμ€ λ΄λΆμμλ§ μ κ·Ό κ°λ₯
μ΄ ν€μλλ μμνκ² νμ μμ€ν λ΄μμλ§ μ‘΄μ¬νλ€.
νμ μ€ν¬λ¦½νΈμ λ©€λ² μ κ·Όμ±μ νμ μμ€ν μμλ§ μ‘΄μ¬νλ λ°λ©΄, μλ°μ€ν¬λ¦½νΈμ private μ μΈμ λ°νμμλ μ‘΄μ¬νλ€λ μ μ΄ μ°¨μ΄μ μ΄λ€. protected λλ privateλ‘ μ μΈλ νμ μ€ν¬λ¦½νΈ ν΄λμ€ λ©€λ²λ λͺ μμ μΌλ‘ λλ μ묡μ μΌλ‘ publicμΌλ‘ μ μΈλ κ² μ²λΌ λμΌν μλ°μ€ν¬λ¦½νΈ μ½λλ‘ μ»΄νμΌλλ€. μλ°μ€ν¬λ¦½νΈ λ°νμμμλ # private νλλ§ μ§μ ν privateμ΄λ€.
μ κ·Όμ± μ νμλ readonlyμ ν¨κ» νμν μ μλ€. readonlyμ λͺ μμ μ κ·Όμ± ν€μλλ‘ λ©€λ²λ₯Ό μ μΈνλ €λ©΄ μ κ·Όμ± ν€μλλ₯Ό λ¨Όμ μ μ΄μΌ νλ€.
8.7.1 μ μ νλ μ νμ
μλ°μ€ν¬λ¦½νΈλ static ν€μλλ₯Ό μ¬μ©ν΄ ν΄λμ€ μ체μμ λ©€λ²λ₯Ό μ μΈνλ€. μλ°μ€ν¬λ¦½νΈλ static ν€μλλ₯Ό λ¨λ μ¬μ©νκ±°λ readonlyμ μ κ·Όμ± ν€μλλ₯Ό ν¨κ» μ¬μ©ν μ μλλ‘ μ§μνλ€.
μ κ·Όμ± ν€μλ + static + readonly ν€μλμ μμΌλ‘ μμ±νλ€.
8.8 λ§μΉλ©°
ν΄λμ€ λ©μλ λ° μμ± μ μΈκ³Ό μ¬μ©λ²
μ½κΈ° μ μ© λλ μ νμ μμ±μΌλ‘ νμνκΈ°
νμ μ λν μ΄μ μμ νμ μΌλ‘ ν΄λμ€ μ΄λ¦ μ¬μ©νκΈ°
ν΄λμ€ μΈμ€ν΄μ€ ννλ₯Ό μ μ©νκΈ° μν μΈν°νμ΄μ€ ꡬννκΈ°
νμ ν΄λμ€μ λν ν λΉ κ°λ₯μ±κ³Ό μ¬μ μ κ·μΉμΌλ‘ ν΄λμ€ νμ₯νκΈ°
abstract ν΄λμ€μ abstract λ©μλλ‘ νμνκΈ°
ν΄λμ€ νλμ νμ μμ€ν μ νμ μΆκ°νκΈ°
Last updated
Was this helpful?