μΈν°νμ΄μ€
- μΈν°νμ΄μ€λ μ€κ³λ λλ λͺ μΈλΌκ³ μκ°ν μ μλ€.
- λͺ¨λ λ©μλκ° μΆμ λ©μλμ΄κ³ , μΌλ° λ³μλ₯Ό κ°μ§ μ μλ€.
- μλ° 8 λΆν° default method, static methodλ μ μ κ°λ₯
- default ν€μλλ₯Ό μ΄μ©νμ¬ λ©μλ ꡬνμ΄ κ°λ₯. λν μ΄λ₯Ό ꡬννλ ν΄λμ€λ defaultλ©μλλ₯Ό μ€λ²λΌμ΄λ© ν μ μλ€.
- μΈν°νμ΄μ€κ° λ³κ²½μ΄ λλ©΄, μΈν°νμ΄μ€λ₯Ό ꡬννλ λͺ¨λ ν΄λμ€λ€μ΄ ν΄λΉ λ©μλλ₯Ό ꡬνν΄μΌ νλ λ¬Έμ κ° μλ€. μ΄λ° λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μνμ¬ μΈν°νμ΄μ€μ λ©μλλ₯Ό ꡬνν΄ λμ μ μλλ‘ νμλ€.
- static ν€μλλ₯Ό μ΄μ©νμ¬ λ©μλ ꡬνμ΄ κ°λ₯
- μΈν°νμ΄μ€μ static λ©μλλ₯Ό μ μΈν¨μΌλ‘μ¨, μΈν°νμ΄μ€λ₯Ό μ΄μ©νμ¬ κ°λ¨ν κΈ°λ₯μ κ°μ§λ μ νΈλ¦¬ν°μ± μΈν°νμ΄μ€λ₯Ό λ§λ€ μ μκ² λμλ€.
- λ°λμ 'μΈν°νμ΄μ€λͺ .λ©μλλͺ ()'λ‘ νΈμΆν΄μΌ νλ€.
- Calculator.exec2(5, 10)
- μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€λ λͺ¨λ λ©μλλ₯Ό κ°μ μ μΌλ‘ ꡬνν΄μΌνλ€λ μλ―Έμ΄λ€.
- μ μΈ μ interface ν€μλλ₯Ό μ¬μ©νλ€.
- μμμ implements ν€μλλ₯Ό μ¬μ©νλ€.
interface Vehicle {
abstract void run ();
abstract void move ();
}
class Car implements Vehicle {
Car() {}
void run() {
....
}
void move() {
....
}
}
μ¬μ©νλ μ΄μ
- μ€κ³λλΌκ³ μκ°νλ©΄ λλ€.
- νλμ κ·μ½, μ¦ κ΅¬μ²΄μ μΈ μ½μ κ°μ κ²μΌλ‘ μΈν΄ νμ μ νμμ μ΄λΌκ³ λ³Ό μ μλ€.
- ν° νλ‘μ νΈμΌμλ‘ λλ κ°λ° μΈμμ΄ λ§μ κ²½μ° μΈν°νμ΄μ€λ₯Ό ν΅ν΄ λ§μ μ΄μ μ μ»κ² λλ€.
- μΈν°νμ΄μ€λ₯Ό νμ©νλ λμμΈ ν¨ν΄μΌλ‘ μ λ΅ ν¨ν΄(Stratergy Pattern)μ΄ μλ€.
- μΈν°νμ΄μ€μλ μλΈ ν΄λμ€(μΈν°νμ΄μ€λ₯Ό ꡬννλ ν΄λμ€)λ€μ΄ ꡬνν λ©μλμ μ μΈλ§ μ μνλ€.
- μ¦, λͺ¨λ μλΈ ν΄λμ€λ€μ κ°μ λ©μλλ₯Ό ꡬννλ€. λ¬Όλ‘ μ μΈμ μ μΈν λ©μλμ ꡬν λ΄μ©μ λ¬λΌμ§ μ μλ€. κ·Έλ¬λ μ λ΅ν¨ν΄μμλ μλΈ ν΄λμ€κ° μΈν°νμ΄μ€μμ μ μνμ§ μμ λ©μλλ₯Ό λ°λ‘ μ μνμ§λ μλλ€. κ²°κ΅ λͺ¨λ μλΈ ν΄λμ€λ μΈλΆμ μΌλ‘ λ€λ₯Ό μ μκ² μ§λ§ κ°μ λμμ νλ€.
μΆμ ν΄λμ€
- μΈν°νμ΄μ€ μν λ νλ©΄μ, ꡬν체λ κ°μ§κ³ μλ ν΄λμ€μ΄λ€.
- 0κ° μ΄μμ μΆμ λ©μλ(μμ§ κ΅¬νλμ§ μμ λ©μλ)λ₯Ό κ°μ§κ³ μΌλ° λ©μλ, μΌλ° λ³μ λν κ°μ§ μ μλ€.
- μ μΈ μ ν€μλλ abstract ν€μλλ₯Ό μ¬μ©νλ€.
- μΆμ ν΄λμ€λ₯Ό μμνκΈ° μν΄μ extends ν€μλλ₯Ό μ¬μ©νλ€.
abstract class Animal {
abstract void bark();
void feed() {
.....
}
}
class Dog extends Animal {
Dog() {}
void bark() {
....
}
}
μ¬μ©νλ μ΄μ
- μμμ κ°μ νκΈ° μν¨μ΄λ€.
- λΆλͺ¨ ν΄λμ€μμ μ μλ§ ν΄λκ³ , μ€μ λμμ μμ ν΄λμ€μμ νκ² λλ€.
- μ΄λ¬ν μΆμ ν΄λμ€μ μ±κ²©μ΄ μ λ°μλμ΄μ§ κ²μ΄ ν
νλ¦Ώ λ©μλ ν¨ν΄(Template Method Pattern), ν©ν 리 λ©μλ ν¨ν΄(Factory Method Pattern)μ΄λ€.
- λ³νμ§ μλ κΈ°λ₯μ μΆμ ν΄λμ€μ ꡬννκ³ , μμ£Ό λ³κ²½λκ±°λ νμ₯ν μ μλ κΈ°λ₯μ μλΈ ν΄λμ€μ μμνμ¬ κΈ°λ₯μ νμ₯μ μΆκ΅¬νλ λμμΈ ν¨ν΄μ΄λ€.
곡ν΅μ
νΌλμ μ΄λνλ μ
μΆμ ν΄λμ€, μΈν°νμ΄μ€ λͺ¨λ μΈμ€ν΄μ€νκ° λ μ μλ€. κ·Έλμ κ²λ§ 보기μλ μΈν°νμ΄μ€μ λμΌνκ² λ³΄μΌ μ μλ€.
μ°¨μ΄μ
- μΈν°νμ΄μ€λ₯Ό μμλ°μ κ²½μ° λͺ¨λ λ©μλλ₯Ό ꡬννλ€.
- λ°λ©΄, μΆμ ν΄λμ€λ₯Ό μμλ°μ κ²½μ° μΌλ° λ©μλκ° μλ μΆμ λ©μλλ§ κ΅¬ννλ€.
- λ°λΌμ, μΆμ ν΄λμ€λ ν€μλ κ·Έλλ‘ νμ₯, μμμ μλ―Έν¨μΌλ‘μ¨, λ¬Όλ €μ£Όλ κ°λ
μ΄ λκ³ (feed λ©μλλ λ¬Όλ €λ°μκΈ°μ ꡬνν νμκ° μλ€),
- λΆλͺ¨-μμ κ΄κ³μΈ κ³μΈ΅ ꡬ쑰λ₯Ό λνλΈλ€.
- νμ§λ§ μΈν°νμ΄μ€λ μμ κ°λ μ΄ μλ, λμΌν λμμ μν ꡬνμ κ°μ ννμ¬ λμΌν λμμ 보μ₯νλ€.
κ²°λ‘ μ μΌλ‘, μΆμ ν΄λμ€λ μμ κ°λ , μΈν°νμ΄μ€λ κ·Έλ μ§ μλ€λ κ²μ μ΄ν΄νλ©΄ μλ‘ κ°μ§λ λͺ©μ μ ꡬλΆμ§μ μ μλ€.
μ°Έκ³
'π > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] GC λ°©μ (0) | 2021.08.25 |
---|---|
[Java] Java SE, Java EE, Java ME (0) | 2021.08.18 |
[Java] λ³μμ scopeμ static (0) | 2021.08.11 |
[Java] κ°λΉμ§ 컬λ μ (Garbage Collection) (0) | 2021.08.11 |
[Java] λλ€μ (0) | 2021.08.10 |
λκΈ