β μΆμν΄λμ€ ( abstract : λ―Έμμ±μ΄λΌλ μλ―Έ )
- μ μΈλ§ μκ³ μ μκ° μλ νλ μ΄μμ λ©μλ(μΆμ λ©μλ)λ₯Ό κ°λ ν΄λμ€λ‘ νμ ν΄λμ€μμ μ€λ²λΌμ΄λ©(overriding) ν κ²μΌλ‘ μμλλ λ©μλμ λν΄ λ©λͺ¨λ¦¬λλΉ μμ΄ λ―Έλ¦¬ νΈμΆ ν κ³νμ μΈμ λκΈ° μν΄ λ§λ λ€.
β νμ λ° κ΅¬μ‘°
[μ κ·Ό μ μ΄μ§μμ] abstract class ν΄λμ€λͺ {
[μ κ·Ό μ μ΄μ§μμ] abstract μλ£ν λ©μλλͺ ([맀κ°λ³μ], ...); //λ©μλμ μ μΈλΆλ§ μμ±νλ€.
}
μ μ΄μ - 1. μ κ·Όμ μ΄ μ§μμ : public , protected , default , private
- 2. κ·ΈμΈ μ§μμ : static, final , abstract , ...λ±λ±
**λ¨, μ κ·Ό μ μ΄μ§μμλ λ€κ°μ§μ€ νλλ§ μ νν΄μ μ¬μ©ν΄μΌνλ€. μ μ΄μλ€ κ°μ μμλ κ΄κ³μμ§λ§ μ£Όλ‘ μ κ·Ό μ μ΄ μ§μμλ₯Ό μ μΌ μΌμͺ½μ λλ κ²½ν₯μ΄ μλ€.
β νΉμ§
ν΄λμ€κ° μ μ΄λ νλ μ΄μμ μΆμ λ©μλλ₯Ό ν¬ν¨ν λ κ·Έ ν΄λμ€λ ν΄λμ€ μμ 'abstract' ν€μλλ₯Ό λΆμ¬
μΆμ ν΄λμ€λ‘ λͺ μν΄μΌνλ©°, μΆμν΄λμ€λ‘ μ μΈν κ²½μ°μλ λΆμμ ν ννμ ν΄λμ€μ΄λ―λ‘ κ°μ²΄λ₯Ό μμ±ν μ μλ€. μΆμ λ©μλκ° μ‘΄μ¬νμ§ μλ μΆμ ν΄λμ€ λ§μ λ κ°μ²΄λ₯Ό μμ± ν μ μλ κ²μ΄λ€.
→ μΆμλ©μλκ° μλ ν΄λμ€λ μ μ‘΄μ¬ ν κΉ?
- ν΄λμ€ μ€ ν΄λμ€μμ λ΄μ©μ΄ μλ λ©μλλ§ μ‘΄μ¬νλ ν΄λμ€κ° μλλ° μ΄λ° ν΄λμ€μ κ°μ²΄λ₯Ό μμ±νμ§ λͺ»νκ² νκΈ° μν΄μ ν΄λμ€ μμ abstractλ₯Ό λΆμΈλ€. λμ€μ μμλ°μ νμν λ©μλλ§ μ€λ²λΌμ΄λ© νμ¬ μ¬μ©νλ€ ('abstract'κ° λΆμ λ©μλλ 무쑰건 μ€λ²λΌμ΄λ© ν΄μΌνλ€.)
μ¦, μΆμν΄λμ€λ λ 립ν΄λμ€ λ 립μ μΌλ‘ μ‘΄μ¬ ν μ μκΈ° λλ¬Έμ μμμ μν΄μλ§ μ‘΄μ¬νλ©° μΆμ ν΄λμ€μμ
μμλ°μ νμ ν΄λμ€μμλ λ°λμ μΆμ λ©μλλ₯Ό μ€λ²λΌμ΄λ©(overriding)ν΄μΌνλ€.
** 'abstract' ν€μλλ ν΄λμ€μ λ©μλμμλ§ μ¬μ©ν μ μμΌλ©΄ λ©€λ² λ³μ , λ‘컬λ³μμμλ μ¬μ© λΆκ°λ₯νλ€
ν΄λμ€ - ν΄λμ€ λ΄μ μΆμ λ©μλκ° μ μΈ λμ΄ μμμ μλ―Ένλ€.
λ©μλ - μ μΈλΆλ§ μμ±νκ³ κ΅¬νλΆλ μμ±νμ§ μμ μΆμ λ©μλμμ μλ¦°λ€.
'JAVA > κ°λ μ 리' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μμ±μ νΈμΆ/this();/java (0) | 2020.02.09 |
---|---|
λ©€λ²λ³μ μ΄κΈ°ν λ°©λ²/λͺ μμ μ΄κΈ°ν/μ΄κΈ°ν λΈλ vs μμ±μ/java (0) | 2020.02.09 |
[Java] μ§μλ³μμ μ μλ³μ (0) | 2020.02.06 |