2022. 4. 24. 16:08γJAVA/μλ°μ μ μ
https://hyejin.tistory.com/568
1οΈβ£ μΆμν΄λμ€ μμ±
μ΄λ€ ν΄λμ€μ 곡ν΅μ μΌλ‘ μ¬μ©λ μ μλ ν΄λμ€λ₯Ό λ°λ‘ μμ±νκΈ°λ νκ³ , κΈ°μ‘΄μ ν΄λμ€μ 곡ν΅μ μΈ λΆλΆμ λ½μμ μΆμν΄λμ€λ‘ λ§λ€μ΄ μμνλλ‘ νλ κ²½μ°λ μλ€.
μμμ΄ μμ ν΄λμ€λ₯Ό λ§λλλ° μ‘°μ ν΄λμ€λ₯Ό μ¬μ©νλ κ²μ΄λΌλ©΄, λ°λλ‘ μΆμνλ κΈ°μ‘΄μ ν΄λμ€μ 곡ν΅μ μΈ λΆλΆμ λ½μλ΄μ μ‘°μ ν΄λμ€λ₯Ό λ§λλ κ²μ΄λ€.
μμ κ³μΈ΅λμ λ°λΌ λ΄λ €κ°μλ‘ ν΄λμ€λ μ μ κΈ°λ₯μ΄ μΆκ°λμ΄ κ΅¬μ²΄νμ μ λκ° μ¬ν΄μ§λ©°, μμ κ³μΈ΅λλ₯Ό λ°λΌ μ¬λΌκ°μλ‘ ν΄λμ€λ μΆμνμ μ λκ° μ¬ν΄μ§λ€κ³ ν μ μλ€.
-> μ¦, μμ κ³μΈ΅λλ₯Ό λ°λΌ λ΄λ €κ°μλ‘ μΈλΆνλκ³ , μ¬λΌκ°μλ‘ κ³΅ν΅ μμλ§ λ¨κ² λλ€.
μΆμν: ν΄λμ€κ°μ 곡ν΅μ μ μ°Ύμλ΄μ 곡ν΅μ μ‘°μμ λ§λλ μμ
ꡬ체ν: μμμ ν΅ν΄ ν΄λμ€λ₯Ό ꡬν, νμ₯νλ μμ
βabstract λ₯Ό λΆμ¬μ μΆμλ©μλλ‘ μ μΈνλ μ΄μ
μμ ν΄λμ€μμ μΆμ λ©μλλ₯Ό λ°λμ ꡬννλλ‘ κ°μνκΈ° μν΄μμ΄λ€.
λ§μΌ μΆμλ©μλλ‘ μ μλμ΄ μμ§ μκ³ λΉ λͺΈν΅λ§ κ°μ§λλ‘ μ μλμ΄ μλ€λ©΄, μμλ°λ μμ ν΄λμ€μμλ μ΄ λ©μλλ€μ΄ μ¨μ ν ꡬνλ κ²μΌλ‘ μΈμνκ³ μ€λ²λΌμ΄λ©μ ν΅ν΄ μμ μ ν΄λμ€μ λ§λλ‘ κ΅¬ννμ§ μμ μλ μκΈ° λλ¬Έμ΄λ€.
-> λ€νμ±μμ λ°°μ λ―μ΄ μ‘°μ ν΄λμ€ νμ μ μ°Έμ‘°λ³μλ‘ μμ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°νλ κ²μ΄ κ°λ₯νκΈ° λλ¬Έμ μ‘°μν¬λμ€νμ μ λ°°μ΄μ μμ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό λ΄μ μ μλ€.
2οΈβ£ μΈν°νμ΄μ€ interface
μΈν°νμ΄μ€λ μΌμ’ μ μΆμν΄λμ€μΈλ° νλ§λλ‘ μΆμλ©μλμ μ§ν©μ΄λ€.
μΈν°νμ΄μ€λ μΆμν΄λμ€μ²λΌ μΆμλ©μλλ₯Ό κ°μ§λ§ μΆμν΄λμ€λ³΄λ€ μΆμν μ λκ° λμμ μΆμν΄λμ€μ λ¬λ¦¬ λͺΈν΅μ κ°μΆ μΌλ° λ©μλ λλ λ©€λ²λ³μλ₯Ό ꡬμ±μμΌλ‘ κ°μ§ μ μλ€!!!
μ€μ§ μΆμλ©μλμ μμλ§μ λ©€λ²λ‘ κ°μ§ μ μμΌλ©°, κ·Έ μΈμ λ€λ₯Έ μ΄λ ν μμλ νμ©νμ§ μλλ€!!!
μΆμν΄λμ€λ₯Ό λΆλΆμ μΌλ‘λ§ μμ±λ 'λ―Έμμ± μ€κ³λ' λΌκ³ νλ€λ©΄, μΈν°νμ΄μ€λ ꡬνλ κ²μ μ무κ²λ μκ³ λ°κ·Έλ¦Όλ§ κ·Έλ €μ Έ μλ 'κΈ°λ³Έ μ€κ³λ'λΌκ³ ν μ μλ€.
μΈν°νμ΄μ€ μμ±
μΈν°νμ΄μ€λ₯Ό μμ±νλ κ²μ ν΄λμ€λ₯Ό μμ±νλ κ²κ³Ό κ°κ³ , ν€μλλ₯Ό κ·Έλ₯ interfaceλ₯Ό μ°λ©΄ λλ€.
interface μΈν°νμ΄μ€ μ΄λ¦ {
public static final νμ μμμ΄λ¦ = κ°;
public abstract λ©μλμ΄λ¦(맀κ°λ³μ λͺ©λ‘);
}
-> λͺ¨λ λ©€λ²λ³μλ public static finalμ΄μ΄μΌ νκ³ , μ΄λ₯Ό μλ΅ν μ μλ€.
λͺ¨λ λ©μλλ pulbic abstract μ΄μ΄μΌ νκ³ , μ΄λ₯Ό μλ΅ν μ μλ€.
βοΈstatic λ©μλμ λν΄νΈ λ©μλλ μμΈ!!
μλλ μΈν°νμ΄μ€μ λͺ¨λ λ©μλλ μΆμλ©μλμ΄μ΄μΌ νλλ°, jdk 1.8λΆν° μΈν°νμ΄μ€μ static λ©μλμ λν΄νΈ λ©μλμ μΆκ°λ₯Ό νμ©νλ λ°©ν₯μΌλ‘ λ³κ²½λμλ€.
μΈν°νμ΄μ€ μμ
μΈν°νμ΄μ€λ μΈν°νμ΄μ€λ‘λΆν°λ§ μμλ°μ μ μμΌλ©° ,ν΄λμ€μλ λ¬λ¦¬ λ€μ€μμ μ¦ μ¬λ¬κ°μ μΈν°νμ΄μ€λ‘λΆν° μμλ°λ κ²μ΄ κ°λ₯νλ€.
μΈν°νμ΄μ€ ꡬν
μΈν°νμ΄μ€λ μΆμν΄λμ€μ²λΌ κ·Έ μ체λ‘λ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μμΌλ©°, μΆμ ν΄λμ€κ° μμμ ν΅ν΄ μΆμλ©μλλ₯Ό μμ±νλ κ²μ²λΌ μΈν°νμ΄μ€λ μμ μ μ μλ μΆμλ©μλμ λͺΈν΅μ λ§λ€μ΄μ£Όλ ν΄λμ€λ₯Ό μμ±ν΄μΌ νλ€.
μΈν°νμ΄μ€λ ꡬννλ€λ μλ―Έμ ν€μλ implements λ₯Ό μ¬μ©νλ€.
class ν΄λμ€μ΄λ¦ implements μΈν°νμ΄μ€μ΄λ¦ {
// μΈν°νμ΄μ€μ μ μλ μΆμ λ©μλλ₯Ό ꡬνν΄μΌ νλ€.
}
λ§μΌ ꡬννλ μΈν°νμ΄μ€μ λ©μλ μ€ μΌλΆλ§ ꡬννλ€λ©΄ abstract λ₯Ό λΆμ¬μ μΆμν΄λμ€λ‘ μ μΈν΄μΌ νλ€!!
κ·Έλ¦¬κ³ μμκ³Ό ꡬνμ λμμ ν μλ μλ€.
-> Fighter ν΄λμ€λ Unit ν΄λμ€λ‘λΆν° μμλ°κ³ , Fightable μΈν°νμ΄μ€λ§μ ꡬννμ§λ§,
Unit ν΄λμ€λ Object ν΄λμ€μ μμμ΄κ³ , Fightable μΈν°νμ΄μ€λ Attackable, Movable μΈν°νμ΄μ€μ μμμ΄λ―λ‘ Fighter ν΄λμ€λ λͺ¨λ ν΄λμ€μ μΈν°νμ΄μ€μ μμμ΄ λλ μ μ΄λ€.
3οΈβ£ μΈν°νμ΄μ€λ₯Ό μ΄μ©ν λ€μ€ μμ
λ μ‘°μμΌλ‘λΆν° μμλ°λ λ©€λ² μ€μμ λ©€λ²λ³μμ μ΄λ¦μ΄ κ°κ±°λ λ©μλμ μ μΈλΆκ° μΌμΉνκ³ κ΅¬ν λ΄μ©μ΄ λ€λ₯΄λ€λ©΄ μ΄ λ μ‘°μμΌλ‘λΆν° μμλ°λ μμν΄λμ€λ μ΄λ μ‘°μμ κ²μ μμλ°κ² λλ κ²μΈμ§ μ μ μλ€.
μ΄λ νμͺ½μΌλ‘λΆν°μ μμμ ν¬κΈ°νκ±°λ, μ΄λ¦μ΄ μΆ©λνμ§ μλλ‘ μ‘°μ ν΄λμ€λ₯Ό λ³κ²½νλ μλ°μ μλ€.
μΈν°νμ΄μ€λ static μμλ§ μ μν μ μμΌλ―λ‘ μ‘°μν΄λμ€μ λ©€λ²λ³μμ μΆ©λνλ κ²½μ°λ κ±°μ μκ³ , μΆ©λλλ€ νλλΌλ ν΄λμ€ μ΄λ¦μ λΆμ¬μ ꡬλΆμ΄ κ°λ₯νλ€.
κ·Έλ¦¬κ³ μΆμλ©μλλ ꡬν λ΄μ©μ΄ μ ν μμΌλ―λ‘ μ‘°μν΄λμ€μ λ©μλμ μ μΈλΆκ° μΌμΉνλ κ²½μ°μλ λΉμ°ν μ‘°μ ν΄λμ€ μͺ½μ λ©μλλ₯Ό μμλ°μΌλ©΄ λλ―λ‘ λ¬Έμ λμ§ μλλ€.
4οΈβ£ μΈν°νμ΄μ€λ₯Ό μ΄μ©ν λ€νμ±
λ€νμ±μ λν΄ νμ΅ν λ μμ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μ‘°μνμ μ μ°Έμ‘°λ³μλ‘ μ°Έμ‘°νλ κ²μ΄ κ°λ₯νλ€λ κ²μ λ°°μ λ€.
ex) Tv t = new SmartTv();
μΈν°νμ΄μ€ μμ μ΄λ₯Ό ꡬνν ν΄λμ€μ μ‘°μμ΄λΌ ν μ μμΌλ―λ‘, ν΄λΉ μΈν°νμ΄μ€ νμ μ μ°Έμ‘°λ³μλ‘ μ΄λ₯Ό ꡬνν ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°ν μ μμΌλ©°, μΈν°νμ΄μ€ νμ μΌλ‘μ νλ³νλ κ°λ₯νλ€.
μΈν°νμ΄μ€ νμ μ 맀κ°λ³μκ° κ°λ μλ―Έλ λ©μλ νΈμΆ μ ν΄λΉ μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό 맀κ°λ³μλ‘ μ 곡ν΄μΌνλ€λ κ²μ΄λ€!
κ·Έλ¦¬κ³ λ€μκ³Ό κ°μ΄ λ©μλμ 리ν΄νμ μΌλ‘ μΈν°νμ΄μ€μ νμ μ μ§μ νλ κ² μμ κ°λ₯νλ€.
리ν΄νμ μ΄ μΈν°νμ΄μ€λΌλ κ²μ λ©μλκ° ν΄λΉ μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό λ°ννλ€λ κ²μ μλ―Ένλ€.