- μ΅μ€ν μ
- μ΅μ€ν μ (Extension) μ μ€μννΈμ κ°λ ₯ν κΈ°λ₯ μ€ νλμ΄λ€.
- μ΅μ€ν μ μ ꡬ쑰체, ν΄λμ€, μ΄κ±°ν, νλ‘ν μ½ νμ μ μλ‘μ΄ κΈ°λ₯μ μΆκ° ν μ μλ κΈ°λ₯μ΄λ€.
- κΈ°λ₯μ μΆκ°νλ €λ νμ μ ꡬνλ μμ€ μ½λλ₯Ό μμ§ λͺ»νκ±°λ λ³Ό μ μλ€ ν΄λ, νμ λ§ μκ³ μλ€λ©΄ κ·Έ νμ μ κΈ°λ₯μ νμ₯ν μλ μλ€.
<<μ€μννΈμ μ΅μ€ν μ μ΄ νμ μ μΆκ°ν μ μλ κΈ°λ₯>>
- μ°μ° νμ νλ‘νΌν° / μ°μ° μΈμ€ν΄μ€ νλ‘νΌν°
- νμ λ©μλ / μΈμ€ν΄μ€ λ©μλ
- μ΄λμ λΌμ΄μ
- μλΈμ€ν¬λ¦½νΈ
- μ€μ²© νμ
- νΉμ νλ‘ν μ½μ μ€μν μ μλλ‘ κΈ°λ₯ μΆκ°
** μ΅μ€ν μ μ νμ μ μλ‘μ΄ κΈ°λ₯μ μΆκ°ν μλ μμ§λ§, κΈ°μ‘΄μ μ‘΄μ¬νλ κΈ°λ₯μ μ¬μ μν μλ μλ€.
<<ν΄λμ€μ μμκ³Ό μ΅μ€ν μ λΉκ΅>>
μ΄ λμ λΉμ·ν΄λ³΄μ΄μ§λ§ μ€μ μ±κ²©μ λ§μ΄ λ€λ₯΄λ€.
ν΄λμ€μ μμμ ν΄λμ€ νμ μμλ§ κ°λ₯νμ§λ§ μ΅μ€ν μ μ ꡬ쑰체, ν΄λμ€, νλ‘ν μ½ λ±μ μ μ©μ΄ κ°λ₯νλ€. λ ν΄λμ€μ μμμ νΉμ νμ μ λ¬Όλ €λ°μ νλμ μλ‘μ΄ νμ μ μ μνκ³ μΆκ° κΈ°λ₯μ ꡬννλ μμ§ νμ₯μ΄μ§λ§, μ΅μ€ν μ μ κΈ°μ‘΄μ νμ μ κΈ°λ₯μ μΆκ°νλ μν νμ₯μ΄λ€. λ, μμμ λ°μΌλ©΄ κΈ°μ‘΄ κΈ°λ₯μ μ¬μ μν μ μμ§λ§, μ΅μ€ν μ μ μ¬μ μν μ μλ€λ κ²λ ν° μ°¨μ΄ μ€ νλμ΄λ€. μν©κ³Ό μ©λμ λ§κ² μμκ³Ό μ΅μ€ν μ μ μ ννμ¬ μ¬μ©νλ©΄ λλ€.
μμ | μ΅μ€ν μ | |
νμ₯ | μμ§ νμ₯ | μν νμ₯ |
μ¬μ© | ν΄λμ€ νμ | ν΄λμ€, ꡬ쑰체, νλ‘ν μ½, μ λ€λ¦ λ± λͺ¨λ νμ |
μ¬μ μ | κ°λ₯ | λΆκ°λ₯ |
<< μ΅μ€ν μ νμ©>>
μ΅μ€ν μ μ μ¬μ©νλ λμ μλ νμ μ μ μν μμ€μ κΈ°λ₯μ μΆκ°νλ λ°©λ²λ μκ² μ§λ§, μΈλΆ λΌμ΄λΈλ¬λ¦¬λ νλ μμν¬λ₯Ό κ°μ Έλ€ μΌλ€λ©΄ μλ³Έ μμ€λ₯Ό μμ νμ§ λͺ»νλ€. μ΄μ²λΌ μΈλΆμμ κ°μ Έμ¨ νμ μ λ΄κ° μνλ κΈ°λ₯μ μΆκ°νκ³ μ ν λ μ΅μ€ν μ μ μ¬μ©νλ€. λ°λ‘ μμμ λ°μ§ μμλ λλ©°, ꡬ쑰체μ μ΄κ±°νμλ κΈ°λ₯μ μΆκ°ν μ μμΌλ―λ‘ μ΅μ€ν μ μ λ§€μ° νΈλ¦¬ν κΈ°λ₯μ΄λ€.
μ΅μ€ν μ μ λͺ¨λ νμ μ μ μ©ν μ μλ€. λͺ¨λ νμ μ΄λΌ ν¨μ ꡬ쑰체, μ΄κ±°ν, ν΄λμ€, νλ‘ν μ½, μ λ€λ¦ νμ λ±μ λ»νλ€. μ¦, μ΅μ€ν μ μ ν΅ν΄ λͺ¨λ νμ μ μ°μ° νλ‘νΌν°, λ©μλ, μ΄λμ λΌμ΄μ , μλΈμ€ν¬λ¦½νΈ, μ€μ²© λ°μ΄ν° νμ λ±μ μΆκ°ν μ μλ€. λλΆμ΄ μ΅μ€ν μ μ νλ‘ν μ½κ³Ό ν¨κ» μ¬μ©νλ©΄ κ΅μ₯ν κ°λ ₯ν κΈ°λ₯μ μ μ¬νλ€. μ΄ λΆλΆκ³Ό κ΄λ ¨ν΄ νλ‘ν μ½ μ€μ¬ νλ‘κ·Έλλ°(Protocol Oriented Programming)μ λν΄ λ μμ보λ κ²μ μΆμ²νλ€.
- μ μ
- extension ν€μλλ₯Ό μ¬μ©νμ¬ μ μνλ€.
extension νμ₯ν νμ
μ΄λ¦ {
/* νμ
μ μΆκ°λ μλ‘μ΄ κΈ°λ₯ ꡬν */
}
- μ΅μ€ν μ μ κΈ°μ‘΄μ μ‘΄μ¬νλ νμ μ΄ μΆκ°μ μΌλ‘ λ€λ₯Έ νλ‘ν μ½μ μ±νν μ μλλ‘ νμ₯ν μλ μλ€. μ΄λ° κ²½μ°μλ ν΄λμ€λ ꡬ쑰체μμ μ¬μ©νλ κ²κ³Ό λκ°μ λ°©λ²μΌλ‘ νλ‘ν μ½ μ΄λ¦μ λμ΄ν΄μ€λ€.
extension νμ₯ν νμ
μ΄λ¦: νλ‘ν μ½1, νλ‘ν μ½2, νλ‘ν μ½3... {
/* νλ‘ν μ½ μꡬμ¬ν ꡬν */
}
μ€μννΈ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ΄ν΄λ³΄λ©΄ μ€μ λ‘ μ΅μ€ν μ μ΄ κ΅μ₯ν λ§μ΄ μ¬μ©λκ³ μμμ μ μ μλ€.
Double νμ
μλ μλ§μ νλ‘νΌν°μ λ©μλ, μ΄λμ
λΌμ΄μ κ° μ μλμ΄ μμΌλ©° μλ§μ νλ‘ν μ½μ μ±ννκ³ μμ κ²μ΄λΌκ³ μμλμ§λ§, μ€μ λ‘ Double νμ
μ μ μλ₯Ό μ΄ν΄λ³΄λ©΄ κ·Έ λͺ¨λ κ²μ΄ λ€ μ μλμ΄ μμ§λ μλ€. κ·Έλ¬λ©΄ Double νμ
μ΄ μ±ννκ³ μ€μν΄μΌ νλ μλ§μ νλ‘ν μ½μ μ΄λλ‘ κ°μκΉ? μ΄λμμ μ±ννκ³ μ΄λμμ μ€μνλλ‘ μ μλμ΄ μμκΉ? λΉμ°ν λ΅μ μ΅μ€ν
μ
μ΄λ€. μ΄μ²λΌ μ€μννΈ νμ€ λΌμ΄λΈλ¬λ¦¬ νμ
μ κΈ°λ₯μ λλΆλΆ μ΅μ€ν
μ
μΌλ‘ ꡬνλμ΄ μλ€. Double μΈμλ λ€λ₯Έ νμ
λ€μ μ μμ μ΅μ€ν
μ
μ μ°Ύμ보면 λ λ§μ μλ₯Ό λ³΄μ€ μ μλ€.
- ꡬν
<<μ°μ° νλ‘νΌν° μΆκ°>>
- μλ μ΅μ€ν μ μ Int νμ μ λ κ°μ μ°μ° νλ‘νΌν°λ₯Ό μΆκ°ν κ²μ΄λ€.
- Int νμ μ μΈμ€ν΄μ€κ° νμμΈμ§ μ§μμΈμ§ νλ³νμ¬ Boolνμ μΌλ‘ μλ €μ£Όλ μ°μ° νλ‘νΌν°μ΄λ€.
- μ΅μ€ν μ μΌλ‘ Int νμ μ μΆκ°ν΄μ€ μ°μ° νλ‘νΌν°λ Int νμ μ μ΄λ€ μΈμ€ν΄μ€μλ μ¬μ©μ΄ κ°λ₯νλ€.
- μΈμ€ν΄μ€ μ°μ° νλ‘νΌν°λ₯Ό μΆκ°ν μλ μμΌλ©°, static ν€μλλ₯Ό μ¬μ©νμ¬ νμ μ°μ° νλ‘νΌν°λ μΆκ°ν μ μλ€.
<<λ©μλ μΆκ°>>
- λ©μλ μ΅μ€ν μ μ ν΅ν΄ Int νμ μ μΈμ€ν΄μ€ λ©μλμΈ multiply(by:) λ©μλλ₯Ό μΆκ°νλ€.
- μ¬λ¬ κΈ°λ₯μ μ¬λ¬ μ΅μ€ν μ λΈλ‘μΌλ‘ λλ μ ꡬνν΄λ μ ν λ¬Έμ κ° μλ€.
- κ΄λ ¨λ κΈ°λ₯λ³λ‘ νλμ μ΅μ€ν μ λΈλ‘μ λ¬Άμ΄μ£Όλ κ²λ μ’λ€.
<<μ΄λμ λΌμ΄μ μΆκ°>>
- μΈμ€ν΄μ€λ₯Ό μ΄κΈ°ν(μ΄λμ λΌμ΄μ¦)ν λ μΈμ€ν΄μ€ μ΄κΈ°νμ νμν λ€μν λ°μ΄ν°λ₯Ό μ λ¬λ°μ μ μλλ‘ μ¬λ¬ μ’ λ₯μ μ΄λμ λΌμ΄μ λ₯Ό λ§λ€ μ μλ€. νμ μ μ μλΆμ μ΄λμ λΌμ΄μ λ₯Ό μΆκ°νμ§ μλλΌλ μ΅μ€ν μ μ ν΅ν΄ μ΄λμ λΌμ΄μ λ₯Ό μΆκ°ν μ μλ€.
- μ΅μ€ν μ μΌλ‘ ν΄λμ€ νμ μ νΈμ μ΄λμ λΌμ΄μ λ μΆκ°ν μ μμ§λ§, μ§μ μ΄λμ λΌμ΄μ λ μΆκ°ν μ μλ€. μ§μ μ΄λμ λΌμ΄μ μ λμ΄λμ λΌμ΄μ λ λ°λμ ν΄λμ€ νμ μ ꡬνλΆμ μμΉν΄μΌ νλ€(κ° νμ μ μκ΄μλ€).
** μ΅μ€ν μ νμ©νλ©΄ λ€μνκ³ κ°λ ₯ν κΈ°λ₯μ ꡬνν μ μμ§λ§, ν΄λΉ νμ μ μ ν©ν μ΅μ€ν μ μ ꡬννλλ‘ μ£Όμν΄μΌνλ€.