μ€λμ Javaμμ κ°μ₯ μ€μν κ°μ²΄μ§ν₯ κ°λ μ€ νλμΈ
μμ, λ©μλ μ€λ²λΌμ΄λ©/μ€λ²λ‘λ©, λ€νμ±, μΆμ ν΄λμ€, ν νλ¦Ώ λ©μλ ν¨ν΄μ λ°°μ λ€.
μΆμμ μΈ κ°λ λ€μ΄ λ§μμ μ½μ§λ§μ μμμ§λ§,
μ§μ μμ λ₯Ό λ°λΌ ν΄λ³΄λ©΄μ μ΄ν΄νμ§ λͺ»νλ μ°κ²° κ³ λ¦¬λ€μ΄ νλμ© λ§μΆ°μ§λ λλμ΄μλ€.
π μ€λ λ°°μ΄ λ΄μ© μ 리
π¦ μμ (Inheritance)
μμμ κΈ°μ‘΄ ν΄λμ€μ μμ±κ³Ό κΈ°λ₯μ κ·Έλλ‘ λ¬Όλ €λ°μ μλ‘μ΄ ν΄λμ€λ₯Ό λ§λλ κΈ°λ₯μ΄λ€.
μμ ν΄λμ€λ λΆλͺ¨ ν΄λμ€μ λ©€λ²(λ³μ, λ©μλ)λ₯Ό μ¬μ¬μ©ν μ μκ³ , νμνλ©΄ μΌλΆλ₯Ό μ¬μ μν΄μ μ¬μ©ν μλ μλ€.
λ°λ³΅μ μ€μ΄κ³ , κ³΅ν΅ κΈ°λ₯μ ν κ³³μ λͺ¨μ κ΄λ¦¬ν μ μκ² ν΄μ£Όλ ꡬ쑰λ€.
π§ λ©μλ μ€λ²λΌμ΄λ© vs μ€λ²λ‘λ©
μ€λ²λΌμ΄λ©μ μμλ°μ λ©μλλ₯Ό μμ ν΄λμ€μμ μ¬μ μνλ κ²μ΄κ³ ,
μ€λ²λ‘λ©μ νλμ ν΄λμ€ μμμ κ°μ μ΄λ¦μ λ©μλλ₯Ό λ§€κ°λ³μμ ννλ§ λ€λ₯΄κ² μ¬λ¬ κ° μ μνλ κ²μ΄λ€.
λΉμ·ν μ΄λ¦ λλ¬Έμ μμ£Ό ν·κ°λ Έμλλ°, μ€λ λ κ°λ μ μ°¨μ΄λ₯Ό λͺ νν μ 리ν μ μμλ€.
π¨ λ€νμ± (Polymorphism)
λ€νμ±μ κ°μ νμ μ μ°Έμ‘°λ³μκ° μ€μ λ‘λ μ¬λ¬ ννμ κ°μ²΄λ₯Ό κ°λ¦¬ν¬ μ μλ μ±μ§μ λ§νλ€.
λΆλͺ¨ νμ μΌλ‘ μμ κ°μ²΄λ₯Ό λ€λ£° μ μκ³ , μ€ν μμ μ λ°λΌ μ€μ λμμ΄ λ¬λΌμ§λ€λ μ μ΄ ν₯λ―Έλ‘μ λ€.
μ²μμ μ κ΅³μ΄ κ·Έλ κ² μ¨μΌ νλ μΆμμ§λ§, μ μ°ν μ½λ ꡬ쑰λ₯Ό λ§λ€κΈ° μν ν΅μ¬ κ°λ μ΄λΌλ κ±Έ μκ² λλ€.
π© μΆμ ν΄λμ€ (abstract class)
μΆμ ν΄λμ€λ κ°μ²΄λ₯Ό μ§μ μμ±ν μ μλ ν΄λμ€λ‘,
μμ ν΄λμ€κ° λ°λμ ꡬνν΄μΌ νλ μΆμ λ©μλλ₯Ό ν¬ν¨ν μ μλ€.
곡ν΅μ μΈ λΌλλ μΆμ ν΄λμ€μμ μ μνκ³ , μΈλΆ ꡬνμ κ° μμ ν΄λμ€μμ λ§‘κ² νλ λ°©μμ΄λ€.
π« ν νλ¦Ώ λ©μλ ν¨ν΄
ν νλ¦Ώ λ©μλλ μμ ν΄λμ€μμ μ 체 λ‘μ§μ νλ¦μ μ μνκ³ ,
μΈλΆμ μΈ λμμ νμ ν΄λμ€μμ ꡬννκ² λ§λλ ν¨ν΄μ΄λ€.
νλ¦μ μ μ§νλ©΄μλ μ μ°νκ² μ»€μ€ν°λ§μ΄μ§ ν μ μλ€λ μ μμ ꡬ쑰μ μΌλ‘ μ μ©νλ€κ³ λκΌλ€.
π§‘ λλ μ
μ€λμ νλνλ κ°λ μ체λ μ½μ§ μμμ§λ§, 무μ보λ€λ μ΄ κ°λ λ€μ΄ μ νμνμ§, μ΄λμ μ΄λ»κ² μ°μ΄λμ§λ₯Ό μ΄ν΄νλ κ³Όμ μ΄ λ μ€μνλ κ² κ°λ€.
μ²μμ κ·Έμ μ΄λ €μ΄ λ¨μ΄λ€μ λμ΄μ²λΌ λκ»΄μ‘μ§λ§, μ§μ μ½λλ₯Ό μμ±νκ³ μ€νν΄ λ³΄λ©΄μ
“μ, μ΄κ² μ΄λ κ² μ°κ²°λλκ΅¬λ” νκ³ μ‘°κΈμ© κ°μ΄ μ‘νκΈ° μμνλ€.
νΉν μ€λ²λΌμ΄λ©κ³Ό λ€νμ±μ ν¨κ» μ΄ν΄νλ©΄μ ν΄λμ€λ₯Ό μ€κ³νλ λ°©μμ΄ λ¨μ ꡬν μ΄μμ μ¬κ³ λ₯Ό νμλ‘ νλ€λ κ²μ λκΌλ€.
μμ¦ μλ°λ₯Ό μ μ λ κΉκ² λ°°μ°λ©΄μ, λμ€μ μ΄ μ§μμ λ°νμΌλ‘ λ°±μλλ₯Ό ꡬμ±νκ³ , μ€μ μλΉμ€ λ‘μ§μ μ§κ² λ λ μ μκ°νλ
λ²μ¨λΆν° κΈ°λκ° λλ€.
μ§κΈμ²λΌ νλμ© κΌΌκΌΌν μ΅νλλ©΄, λΆλͺ ν λ ννν κΈ°λ°μ΄ λμ΄μ€ κ±°λΌ λ―Ώλλ€.