μμ
(inheritance)
μΌλ°νλ ν΄λμ€λ₯Ό μ¬μ¬μ©νμ¬ μλ‘μ΄ specific ν ν΄λμ€λ₯Ό μμ±νλ κ²
μμμ νλ ν΄λμ€(User)λ₯Ό 'λΆλͺ¨(Parent) ν΄λμ€, μμ(Super) ν΄λμ€, κΈ°λ°(Base) ν΄λμ€'λΌκ³ νννκ³ ,
μμμ λ°λ ν΄λμ€(PaidUser)λ₯Ό 'μμ(Child) ν΄λμ€, νμ(Sub) ν΄λμ€, νμ(Derived) ν΄λμ€'λΌκ³ νννκΈ°λ νλ€.
- μμ ν΄λμ€λ λΆλͺ¨ ν΄λμ€μ λͺ¨λ λ©€λ²λ³μμ λ©μλλ₯Ό μμλ°λλ€
(But, Javaλ λ¨μΌμμλ§ νμ©νκΈ° λλ¬Έμ νλμ ν΄λμ€λ‘λΆν°λ§ μμμ λ°μ μ μλ€)
- μμμ μ¬μ©νλ©΄ ν΄λμ€ κ°μ κ³μΈ΅μ λΆλ₯(hierarchical classifications)κ° κ°λ₯ν΄μ§λ€
β· Javaμμλ extendsλ₯Ό μ¬μ©νμ¬ λΆλͺ¨ ν΄λμ€μ λ©€λ²λ₯Ό μμλ°μ νμ₯μν¬ μ μλ€.
class μμ_ν΄λμ€λͺ extends λΆλͺ¨_ν΄λμ€λͺ { ··· }
λ°λΌμ μ κ·Έλ¦Όμ μ½λλ‘ νννλ©΄ μλμ κ°μμ§λ€.
class PaidUser extends User{}
class EnterpriseUser extends User{}
class AdministratorUser extends User{}
λν μμλ°μ λ©€λ²λ μμ ν΄λμ€μμ λ³λλ‘ μ μΈνμ§ μλλ€.
κ·ΈλΌ μμ κ΄κ³μμ μμ±μλ μ΄λ»κ² λμν κΉ?
- λΆλͺ¨ ν΄λμ€μ μμ±μλ μμλμ§ μλλ€.
- μμ ν΄λμ€μ κ°μ²΄λ₯Ό μμ± μ, λΆλͺ¨ ν΄λμ€μ κΈ°λ³Έ μμ±μλ₯Ό μλμΌλ‘ νΈμΆλλ€.
- μ΅μμ λΆλͺ¨ ν΄λμ€μ μμ±μλΆν° μμ±μ ν λ¨κ³ μλ μμμΌλ‘ μ°¨λ‘λλ‘ νΈμΆλλ€
μ κ·Ό μ μ΄μ(access modifier)
: μΈλΆλ‘λΆν°μ μ κ·Όμ μ ννκΈ° μν λͺ©μ μ ν€μλ
→ μμ κ΄κ³μμμ μ κ·Όμ μ ννκΈ° μν΄μλ μ¬μ©λλ€.
βΆ private μ κ·Ό μ μ΄μ
: μ€μ§ κ°μ ν΄λμ€ λ΄μμλ§ μ κ·Όμ΄ κ°λ₯νλ―λ‘, μμλ°μ μμ ν΄λμ€μμμ μ κ·Όλ μ νλλ€.
β» private λ©€λ²λ³μμ λν΄ μΈλΆ μ κ·Όμ΄ νμν κ²½μ°, λΆλͺ¨ ν΄λμ€μ public getter, setter λ©μλλ₯Ό μ 곡νλ€.
βΆ protected μ κ·Ό μ μ΄μ
: μμ λ°μ μμ ν΄λμ€μμμ μ κ·Όμ κ°λ₯νκ² νλ€.
β« super ν€μλ
- Javaμμ superλ λΆλͺ¨ ν΄λμ€λ₯Ό μλ―Ένλ ν€μλμ΄λ€.
- super( ); λ λΆλͺ¨ ν΄λμ€μ νλΌλ―Έν° μλ μμ±μλ₯Ό νΈμΆνλ μ½λ
- μμ ν΄λμ€μμ λΆλͺ¨ ν΄λμ€ μμ±μλ₯Ό λͺ μμ μΌλ‘ νΈμΆνμ§ μμΌλ©΄, Java μ»΄νμΌλ¬λ μμ ν΄λμ€ μμ±μμ 첫 λ²μ§Έ λΌμΈμ super( ); λ₯Ό μλμΌλ‘ μ½μ νλ€.
- λ©€λ²λ³μ or λ©μλμ μ κ·Ό νκΈ° μν΄μλ .(μ μ°μ°μ)μ μ¬μ©νμ¬ super.λ©€λ²λ³μ( ); λ₯Ό μ¬μ©νλ€.
* νλΌλ―Έν°κ° μλ μμ±μλ₯Ό νΈμΆν λλ λ°λμ λͺ μμ μΈ μ μΈμ΄ νμνλ€.
main λ©μλμμ UniversityUser κ°μ²΄λ₯Ό μμ±ν λ, UniversityUserκ° μ€νλκΈ° μ μ super() νΈμΆλ‘ λΆλͺ¨μμ±μμΈ EnterpriseUserκ° νΈμΆλλ€. λ μ€ν μ μ super()κ° μμΌλ―λ‘ λΆλͺ¨μμ±μ Userλ₯Ό νΈμΆνλ€. μ΄ν UserλΆν° β , β‘, β’ μμλλ‘ μΆλ ₯μ΄ λλ€. ( User ν΄λμ€κ° κ°μ₯ λ¨Όμ μΆλ ₯μ΄ λλ€κ³ ν΄μ 첫λ²μ§Έλ‘ νΈμΆμ΄ λ κ²μ΄ μλ!)
* λ§μ½ λΆλͺ¨ ν΄λμ€μ κ°μ μ΄λ¦μ λ©€λ²λ³μκ° μλ€λ©΄ λΆλͺ¨ ν΄λμ€λ super.λ₯Ό μκΈ° μμ μ this.λ₯Ό μ¬μ©νμ¬ μ§μΉνλ€.
λ©μλ μ€λ²λΌμ΄λ©(method overriding)
: λΆλͺ¨ ν΄λμ€λ‘λΆν° μμλ°μ λ©μλλ₯Ό μμ ν΄λμ€κ° μμ λ§μ νΉμ±μ λ§κ² μλ‘κ² κ΅¬ννλ κ²
* μ€λ²λΌμ΄λ©(overriding) ≠ μ€λ²λ‘λ©(overloading)
μμ μμ μ½λλ€μ²λΌ λΆλͺ¨ν΄λμ€μΈ User ν΄λμ€μμ μμλ°μ login λ©μλλ₯Ό κ·Έλλ‘ μ¬μ©νμ§ μκ³ , loginμ΄λΌλ κ²μ μ μ¬νμ§λ§ μ½λλ₯Ό μκΈ° νΉμ±μ λ§κ² ꡬννμκΈ° λλ¬Έμ λμλ€μ΄ μ‘°κΈμ© λ€λ₯Έ κ²μ λ³Ό μ μλ€. μ΄λ κ² μ€λ²λΌμ΄λ©μ ν΅ν΄ μ½λμ κ°κ²°μ±μ μ μ§νλ©΄μ λ΄μ©μ νμ₯μν¬ μ μλ€λ μ₯μ μ΄ μλ€.
β» λ©μλ μ€λ²λΌμ΄λ©μ 쑰건
→ λΆλͺ¨ ν΄λμ€μ λ©μλμ "μ΄λ¦, νλΌλ―Έν°, 리ν΄νμ "μ΄ κ°μμΌνλ€. (μ¦, μ€κ΄νΈ μμ λ‘μ§ μΈμλ μ λΆ λμΌν΄μΌ ν¨)
μ½λνλ μ Java μΉ κ°λ° 체νλ¨ νλ μ€ 'Java νλ‘κ·Έλλ° μ΄κΈ' μ΄λ¬λ κ°μλ₯Ό λ£κ³ μμ±νμμ΅λλ€ :)
μ½λνλ μ URL: https://www.codepresso.kr/
'π κΈ°ν > μ½λνλ μ 체νλ¨_BE' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] 컬λ μ νλ μμν¬ : List (0) | 2022.01.21 |
---|---|
[Java] 컬λ μ νλ μμν¬μ μ λ€λ¦ (0) | 2022.01.21 |
[Java] ν΄λμ€ | Method | μμ±μ | μ€λ²λ‘λ© (0) | 2022.01.19 |
[Git] GitFlow | λΈλμΉ νμ© μ λ΅ (0) | 2022.01.17 |
[Git] Tagμ μ’ λ₯ λ° Tag μμ±νκΈ° (0) | 2022.01.17 |