μ μ€λμ, μΆμ ν΄λμ€μ μΆμ λ©μλμ κ΄ν΄μ μμ보μ.
κ·ΈλΌ λ¨Όμ μ©μ΄ λΆν° μμ보λλ‘ νμ.
μΆμ ν΄λμ€λ?
--->
1κ° μ΄μμ μΆμλ©μλλ₯Ό κ°μ§κ³ μλ ν΄λμ€μ΄λ€.
μΆμ ν΄λμ€κ°μ κ²½μ°μλ, 미ꡬνλ(μΆμλ©μλ)λ₯Ό λ©€λ²λ‘ κ°μ§κ³ μκΈ° λλ¬Έμ λ 립μ μΌλ‘
κ°μ²΄νκ° λΆκ°λ₯νλ€. μ΄ λ»μ Class A = new Class(); μ κ°μ νμμΌλ‘ κ°μ²΄νλ₯Ό νμ§ λͺ»νλ€λ μλ―Έμ΄λ€.
μΆμ ν΄λμ€λ₯Ό μμλ°λ μμ ν΄λμ€λ μΆμλ©μλλ₯Ό ꡬνν΄μΌ νλ "κ°μ μ±"μ κ°μ§λ€.
λμ€μ μ€λͺ λ μ΄μΌκΈ°μ§λ§, κ°μ²΄νλ₯Ό μ¬μ©ν μ μμΌλ, static μ μ΄μ©νλ©΄ κ°μ²΄ν μμ΄ μ¬μ©μ΄ κ°λ₯νλ€.
κ·Έλ λ€λ©΄ μΆμ λ©μλκ° λ¬΄μμ΄λ?
μΆμ λ©μλλ?
--->
μ μΈλ§ λκ³ , ꡬνμ΄ λμ§ μμ λ©μλμ΄λ€(미ꡬν λ λ©μλ)
λ€μκ³Ό κ°μ ννλΌκ³ λ³Ό μ μλ€
μ κ·Όμ νμ 리ν΄νμ
λ©μλλͺ
(μλ£ν 맀κ°λ³μλͺ
) => μ μΈλΆ
{
μ€νν μ½λ => ꡬνλΆ(body)
}
μΆμ λ©μλλ₯Ό μ μΈνλ λ°©λ²μ λ€μκ³Ό κ°λ€.
μ κ·Όμ νμ abstract 리ν΄νμ λ©μλλͺ (μλ£ν 맀κ°λ³μλͺ );
1. abstract ν€μλλ₯Ό μμ±νλ€
2. λ§μ§λ§μ μΈλ―Έμ½λ‘ μ λΆμΈλ€
μ¦, ꡬνλΆ(μ€κ΄νΈ λΆλΆ)μ΄ μ‘΄μ¬νμ§ μλ κ²μ΄λ€.
μ΄λ¬ν μΆμ λ©μλλ₯Ό λ©€λ²λ‘ κ°μ§κ³ μλ κ²μ΄ λ°λ‘ μΆμ ν΄λμ€μ΄λ€.
κ·Έλ° μΆμ ν΄λμ€λ₯Ό μ μΈνλ λ°©λ²μ λ€μκ³Ό κ°λ€.
abstract class ν΄λμ€λͺ
{
νλ
μμ±μ
μΌλ° λ©μλ
μΆμ λ©μλ
}
* μΆμ λ©μλλ₯Ό 1κ° μ΄μ κ°μ§λ ν΄λμ€λ λ°λμ
abstract ν€μλλ₯Ό ν΅ν΄ μΆμν΄λμ€λ‘ μ μΈν΄μΌ νλ€
κ·Έλ λ€λ©΄, μΆμ ν΄λμ€λ₯Ό μ¬μ©νλ μ΄μ κ° λλ체 무μμΌκΉ?
-->
μμ ν΄λμ€ κ°μ 곡ν΅μ μΈ λ©μλ μ΄λ¦μ ν΅μΌν μ μλ€. μ¦, ν΅μΌμ±μ λΆμ¬νκΈ°κ° μ©μ΄νλ€.
λν, λ°λμ ꡬνν΄μΌ νλ λ©μλλ₯Ό μ μΈν¨μΌλ‘μ¨ κ³΅ν΅ κ·κ²©μ μ 곡νλ€.
==> ꡬνμ μμ ν΄λμ€λ§λ€ λ€λ₯΄κ² μ¬μ©κ°λ₯
μ¦, μ¬μ©μκ° μ§μ λ©μλλ₯Ό μ μΈν΄μΌ νλ€λ κ°μ μ±μ λΆμ¬νκΈ° λλ¬Έμ, μ¬μ©μμ μ λ§μ λ§κ²
μ€μ μ ν΄μ€μΌλ§ νλ€λ μλ―Έλ₯Ό λΆμ¬ν μ μλ€λ κ²μ΄λ€.
κ·Έλ λ€λ©΄ μ΄μ μμμ μ½λλ₯Ό 보μ.
μ 보면, μΆμν΄λμ€ AbsClassλ₯Ό μ μΈνμλ€. λ©€λ²λ‘ κ°μ§κ³ μλ κ²λ€μ νμΈν΄λ³΄λ©΄,
νλμ int absData; μ μΈλμ΄μκ³
μμ±μλ‘λ parameterλ‘ int absData λ°κ² λμ΄μκ³ νλμ μ μ₯νκ² λμ΄μλ€. λμμ μΆλ ₯λ©μλκ° μλ€.
κ·Έ μλμ μ΄μ μ€μνκ² μλ κ²μ΄, public abstract void abstractMethod1();κ³Ό
public abstract void abstractMethod2();μ΄λ€. μ΄κ²λ€μ΄ λ°λ‘ ꡬνλΆκ° μ‘΄μ¬νμ§ μλ μΆμ λ©μλλ€.
μ¬μ μκ° κ°μ λλ κ²μ΄λ€. μΌλ° λ©μλλ κ·Έλ₯ λΉκ΅λ₯Ό μν΄μ μ§μ΄ λ£μ΄λ³΄μλ€.
ClassAλ₯Ό μμ ν΄λμ€λ‘ μ μΈμ νμλ€. extends AbsClassλ‘ μμλ°κ³ μλ κ²μ νμΈν μ μλ€.
νΉμ΄μ μ λ°λ‘ μ¬κΈ° μ΄λ Έν μ΄μ (@Override) μ€λ²λΌμ΄λ© λ λ©μλλ€μ΄λ€.
μμ ν΄λμ€λ μΆμλ©μλμ μ¬μ μλ₯Ό κ°μ λ°κΈ° λλ¬Έμ, μ΄λ κ² μ¬μ μλ₯Ό 무쑰건 ν΄μ€μΌλ§ νλ€.
κ·Έλ λ€λ©΄ λ§μ½ μ¬μ μλ₯Ό νμ§ μκ³ , λλ€λ₯Έ μΆμ λ©μλλ₯Ό λ§λ€μ΄λ²λ¦°λ€λ©΄ μ΄λ»κ² λ κΉ?
(μ΄ ν΄λμ€λ ClassAμλ μμ ν λ³κ°μ΄λ―λ‘ μκ΄μ΄ μλ€)
AbsClassλ₯Ό μμλ°λ μλ‘μ΄ μμ ν΄λμ€ ClassBμΈλ°, μΆμλ©μλλ₯Ό μ¬μ μνμ§ μκ³ μ€νλ € μλ‘μ΄
μΆμλ©μλλ₯Ό λ§λ€μ΄λ²λ Έλ€. μ΄λ κ² λλ©΄, μ΄ ν΄λμ¬ λ°λ λ€μ μμμ΄ λͺ¨λ κ²μ μ§μ΄μ§λ€. λ°λ‘ μ΄λ κ² λ§μ΄λ€.
κ²°κ΅ λͺ¨λ κ±Έ μ¬μ μλ₯Ό νλ κ°μ μ±μ λ°κ²λ ν΄λμ€ ClassCμ΄λ€.
μ΄λ λ― κ°μ μ±μ λκΈΈ μλ μμ§λ§, κ²°κ΅ κ·Έ λ©μλλ₯Ό μ¬μ©νλ €λ©΄ μ°λ¦¬λ μ¬μ μλ₯Ό ν΄μ€μΌλ§ νλ€λ κ²μ΄λ€.
λ§μ§λ§μΌλ‘ AbsClassλ μΆμν΄λμ€μ΄κΈ° λλ¬Έμ κ°μ²΄νκ° μ§μ μλλ€λ κ²μ νμΈν΄λ³΄κ³ λ§λ¬΄λ¦¬ νμ.
λ€μ μ½λλ₯Ό 보λΌ
μ°Έκ³ λ‘ μΆμν΄λμ€λ λΆλͺ¨ ν΄λμ€μ΄λ€. λ°λΌμ μ μΊμ€ν μ΄ κ°λ₯νλ€.
μ½μμ°½ κ²°κ³Όλ λ€μκ³Ό κ°λ€.
ν΄λμ€λ€μ μ μ΄ν΄λ³΄λ©΄ κ²°κ³Όκ° μμ΄λ κ² λμ€λμ§ λΉμ°νκ² μ μ μμ κ²μ΄λ€.
μ€λμ κΈ°λ³Έμ μΈ μΆμν΄λμ€μ μΆμ λ©μλμ λν΄μ μμ보μλ€.
μ€λμ μ¬κΈ°κΉμ§
'μΈμ΄ > JAVA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
JAVA : μΆμ ν΄λμ€ μμ2 (0) | 2024.08.29 |
---|---|
JAVA : μΆμ ν΄λμ€ μμ1 (0) | 2024.08.29 |
JAVA : νλ³ν λ° μΊμ€ν μ°μ΅ (2) | 2024.08.28 |
JAVA : Casting (μΊμ€ν ) (7) | 2024.08.28 |
JAVA : Final(μμ) μ¬μ©νκΈ° (0) | 2024.08.21 |