μμ
- λΆλͺ¨ ν΄λμ€μμλ κΈ°λ³Έ μμ±μλ₯Ό λ§λ€μ΄ λλ κ² μ΄μΈμλ μμμ μν΄μ μλ¬΄λ° μμ μ ν νμλ μλ€.
- μμ ν΄λμ€λ ν΄λμ€ μ μΈμ extends λ€μμ λΆλͺ¨ ν΄λμ€ μ΄λ¦μ μ μ΄μ€λ€.
- μμ ν΄λμ€μ μμ±μκ° νΈμΆλλ©΄, μλμΌλ‘ λΆλͺ¨ ν΄λμ€μ λ§€κ° λ³μ μλ μμ±μκ° μ€νλλ€.
- μμ ν΄λμ€μμλ λΆλͺ¨ ν΄λμ€μ μλ public, protectedλ‘ μ μΈλ λͺ¨λ μΈμ€ν΄μ€ λ° ν΄λμ€ λ³μμ λ©μλλ₯Ό μ¬μ©ν μ μλ€.
μμμ νμμ±
μλ°μμλ λΆλͺ¨ ν΄λμ€κ° κ°κ³ μλ λ³μμ λ©μλλ₯Ό μμλ°μμΌλ‘μ¨, κ°λ°ν λ μ΄μ€, μΌμ€μ μΌμ μν΄λ λλ€.
μλ₯Όλ€μ΄, μ¬λμ΄λΌλ ν΄λμ€λ₯Ό νκ΅μμ μ¬μ©ν λ, κΈ°λ³Έμ μΌλ‘ μ΄λ¦, μ νλ²νΈλ 곡ν΅μΌλ‘ μ¬μ©νμ§λ§ κ΅μμ νμμΌ λ κ°μ§ μ μλ μμ±κ³Ό λ©μλκ° λ€λ₯Ό μ μλ€ μ΄λ΄ λ 곡ν΅μ μΈ μμ±κ³Ό λ©μλλ₯Ό μ¬λμ΄λΌλ ν΄λμ€λ₯Ό λ§λ€κ³ , νμκ³Ό κ΅μλΌλ ν΄λμ€λ₯Ό μ¬λ ν΄λμ€λ₯Ό μμλ°λλ‘ νλ©΄ λΆνμν μ½λλ₯Ό μ€μΌ μ μλ€.
μλ°μμλ λ€μ€ μμμ΄ μ λλ€. "extends λ€μ ν΄λμ€λ₯Ό νλλ§ μ¨μΌμ§, λ κ° μ΄μ ν΄λμ€λ₯Ό λμ΄νλ©΄ μ»΄νμΌμ΄ λμ§ μλλ€."
μμκ³Ό μμ±μ
- λΆλͺ¨ ν΄λμ€μμλ κΈ°λ³Έ μμ±μλ₯Ό λ§λ€μ΄ λλ κ² μ΄μΈμλ μμμ μν΄μ μλ¬΄λ° μμ μ ν νμλ μλ€.
λΆλͺ¨ ν΄λμ€μμ κΈ°λ³Έ μμ±μλ₯Ό λ§λ€μ§ μμΌλ©΄ μλ¬κ° λ°μνλλ° μ΄ λ ν΄κ²° λ°©λ²μ λκ°μ§κ° μλ€.
- λΆλͺ¨ ν΄λμ€μ "λ§€κ° λ³μκ° μλ" κΈ°λ³Έ μμ±μλ₯Ό λ§λ λ€.
- μμ ν΄λμ€μμ λΆλͺ¨ ν΄λμ€μ μμ±μλ₯Ό λͺ μμ μΌλ‘ μ§μ νλ super()λ₯Ό μ¬μ©νλ€.
μλ°μλ superλΌλ μμ½μ΄κ° μλλ°, super()λ₯Ό μ¬μ©νλ©΄ λΆλͺ¨ ν΄λμ€μ μμ±μλ₯Ό νΈμΆνλ€λ κ²μ μλ―Ένκ³ , super.printName()μ μ¬μ©νλ©΄ λΆλͺ¨ ν΄λμ€μ μλ printName()μ΄λΌλ λ©μλλ₯Ό νΈμΆνλ€λ μλ―Έμ΄λ€.
μλ°λ λΆλͺ¨μ λ§€κ° λ³μκ° μλ κΈ°λ³Έ μμ±μλ₯Ό μ°Ύλ κ²μ΄ κΈ°λ³Έμ΄λ€. κ·Έλμ λΆλͺ¨ ν΄λμ€μ λ§€κ° λ³μκ° μλ μμ±μλ§ μμ κ²½μ°μλ super()λ₯Ό μ΄μ©ν΄μ λΆλͺ¨ μμ±μλ₯Ό κΌ νΈμΆν΄μΌλ§ νλ€.
μ€λ²λΌμ΄λ©
μμ ν΄λμ€μμ λΆλͺ¨ ν΄λμ€μ μλ λ©μλμ λμΌνκ² μ μΈνλ κ²μ "λ©μλ Overriding"μ΄λΌκ³ νλ€. μ κ·Ό μ μ΄μ, λ¦¬ν΄ νμ , λ©μλ μ΄λ¦, λ§€κ° λ³μ νμ λ° κ°μκ° λͺ¨λ λμΌν΄μΌνλ€.
λΆλͺ¨ ν΄λμ€μ μ μΈλμ΄ μλ λ©μλμ λμΌνκ² μ μΈλμ΄ μλ λ©μλλ₯Ό μμ ν΄λμ€μ μ μΈνλ©΄ μμ ν΄λμ€μ λ©μλλ§ μ€νλλ€.
ps. "λμΌνκ² μ μΈλμ΄ μλ€"λ "λμΌν μκ·Έλμ²(signature)λ₯Ό κ°μ§λ€" κ³ νννλ€. μκ·Έλμ²λ λ©μλ μ΄λ¦κ³Ό λ§€κ° λ³μμ νμ λ° κ°μλ₯Ό μλ―Ένλ€.
μ€λ²λΌμ΄λ©μ λν΄μ μ 리νλ©΄ λ€μκ³Ό κ°λ€.
- λ©μλ μ€λ²λΌμ΄λ©μ λΆλͺ¨ ν΄λμ€μ λ©μλμ λμΌν μκ·Έλμ²λ₯Ό κ°λ μμ ν΄λμ€μ λ©μλκ° μ‘΄μ¬ν λ μ±λ¦½λλ€.
- μ€λ²λΌμ΄λ©λ λ©μλλ λΆλͺ¨ ν΄λμ€μ λμΌν λ¦¬ν΄ νμ μ κ°μ ΈμΌλ§ νλ€.
- μ€λ²λΌμ΄λ©λ λ©μλμ μ κ·Ό μ μ΄μλ λΆλͺ¨ ν΄λμ€μ μλ λ©μλμ λ¬λΌλ λμ§λ§, μ κ·Ό κΆνμ΄ νμ₯λλ κ²½μ°μλ§ νμ©λλ€. μ κ·Ό κΆνμ΄ μΆμλ κ²½μ°μλ μ»΄νμΌ μλ¬κ° λ°μνλ€.
μ°Έμ‘° μλ£νμ ν λ³ν
μμ ν΄λμ€ νμ μμ λΆλͺ¨ ν΄λμ€ νμ μΌλ‘ νλ³νμ νλ©΄ λ¬Έμ κ° μκ³ , λΆλͺ¨ ν΄λμ€ νμ μμ μμ ν΄λμ€ νμ μΌλ‘ ν λ³νμ νλ©΄ μλ¬κ° λ°μνλ€.
- μ°Έμ‘° μλ£νλ ν λ³νμ΄ κ°λ₯νλ€.
- μμ νμ μ κ°μ²΄λ₯Ό λΆλͺ¨ νμ μΌλ‘ ν λ³ν νλ κ²μ μλμΌλ‘ λλ€.
- λΆλͺ¨ νμ μ κ°μ²΄λ₯Ό μμ νμ μΌλ‘ ν λ³νμ ν λμλ λͺ μμ μΌλ‘ νμ μ μ§μ ν΄ μ£Όμ΄μΌ νλ€. μ΄λ, λΆλͺ¨ νμ μ μ€μ κ°μ²΄λ μμ νμ μ΄μ΄μΌλ§ νλ€.
- instanceof μμ½μ΄λ₯Ό μ¬μ©νλ©΄ κ°μ²΄μ νμ μ νμΈν μ μλ€.
- instanceofλ‘ νμ νμΈμ ν λ λΆλͺ¨ νμ λ trueλΌλ κ²°κ³Όλ₯Ό μ 곡νλ€.
λ€νμ±(Polymorphism)
λ€νμ±μ μ΄ν΄νκΈ° μν΄μλ μμμ μ 리ν μ€λ²λΌμ΄λ©κ³Ό ν λ³νμ μ΄ν΄ν΄μΌ νλ€.
μλ₯Όλ€μ΄μ, νλμ λΆλͺ¨ ν΄λμ€μμ λ κ°μ μμ ν΄λμ€λ₯Ό λ§λ€μκ³ λͺ¨λ μ€λ²λΌμ΄λ©λ printNameμ κ°μ§κ³ μλ€κ³ νμ λ.
Parent obj1 = new Parent();
Parent obj2 = new Child();
Parent obj3 = new OtherChild();
obj1.printName();
obj2.printName();
obj3.printName();
My Name is Parent
My Name is Child
My name is OtherChild
λͺ¨λ κ°μ²΄μ νμ μ΄ Parent νμ μΌλ‘ μ μΈλμ΄ μμ§λ§, printName()μ κ²°κ³Όλ λͺ¨λ λ€λ₯Έ κ²μ λ³Ό μ μλ€.
μλνλ©΄ κ° κ°μ²΄μ μ€μ νμ μ λͺ¨λ λ€λ₯΄κΈ° λλ¬Έμ΄λ€. μ΄μ²λΌ ν λ³νμ νλλΌλ, μ€μ νΈμΆλλ κ²μ μλ κ°μ²΄μ μλ λ©μλκ° νΈμΆλλ€. μ΄κ²μ΄ λ°λ‘ λ€νμ±μ΄λ€.
μ°Έκ³ μλ£
μλ°μ η₯1 2nd Edition / μ΄μλ―Ό μ§μ
'Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] μλ° μ»¬λ μ Set (0) | 2022.01.11 |
---|---|
[Java] String ν΄λμ€ μ 리 (0) | 2022.01.08 |
[Java] λ³μμ μλ£ν (0) | 2022.01.04 |
[Java] μλ° ArrayList μ 리 (0) | 2021.09.16 |
[Java]μ κ·ννμ μ 리 (0) | 2021.08.01 |