λ€νμ±
λ€νμ±μ΄λ νλμ κ°μ²΄κ° μ¬λ¬ ννλ₯Ό κ°μ§ μ μλ κ²μ λ»νλ€.
μλ°μμλ ν νμ μ μ°Έμ‘° λ³μλ₯Ό ν΅ν΄ μ¬λ¬ νμ μ κ°μ²΄λ€μ μ°Έμ‘°ν μ μκ² ν΄μ£Όλ κ²μ μλ―Ένλ€.
μ°Έμ‘° λ³μμ νμ λ³ν
μ°Έμ‘° λ³μμ νμ λ³νμΌλ‘ μ¬μ©ν μ μλ λ©€λ²μ κ°μλ₯Ό μ‘°μ ν μ μλ€. νμ λ³νμ μμ κ΄κ³μ μλ ν΄λμ€ μ¬μ΄μμλ§ κ°λ₯νλ€.
μ μΊμ€ν (νμ→μμ ν΄λμ€ νμ λ³ν)μ νλ³ν μ°μ°μμΈ κ΄νΈλ₯Ό μλ΅ν μ μμ§λ§, κ·Έ λ°λμΈ λ€μ΄μΊμ€ν (μμ→νμ ν΄λμ€ νμ λ³ν)μ κ²½μ°μλ λ°λμ κ΄νΈλ₯Ό μμ±ν΄μ€μΌνλ€.
ν΄λμ€μ κ·λͺ¨κ° 컀μ§λ©΄ μ°Έμ‘° λ³μμ νμ
λ³νμ΄ κ°λ₯νμ§ μ¬λΆλ₯Ό instanceof
μ°μ°μλ₯Ό ν΅ν΄ μ μ μμΌλ©° μ΄λ₯Ό νμ©νμ¬ μλ¬λ₯Ό μ΅μνν μ μλ€.
μ°Έμ‘° λ³μ instanceof
νμ
μ λ°ν κ°μ΄ false
μΌ λλ μ°Έμ‘° λ³μκ° null
κ°μ΄κ±°λ νμ
λ³νμ΄ λΆκ°λ₯ν¨μ λνλ΄κ³ true
κ°μ΄ λ°νλλ©΄ ν΄λΉ νμ
μΌλ‘ λ³νμ΄ κ°λ₯νλ€λ κ²μ μλ―Ένλ€.
public class Polymorphism {
public static void main(String[] args) {
Customer customer = new Customer();
customer.buyBeer(new Stella());//νμ ν΄λμ€->μμ ν΄λμ€
customer.buyBeer(new Blanc());
System.out.println("νμ¬ μμ‘μ "+customer.money+"μ μ
λλ€.");
}
}
class Beer{
int price;
public Beer(int price){
this.price = price;
}
}
class Blanc extends Beer{
public Blanc(){
super(4000);
}
public String toString(){
return "λΈλ";
}
}
class Stella extends Beer{
public Stella(){
super(5000);
}
public String toString(){
return "μ€ν
λΌ";
}
}
class Customer{
int money = 10000;
//void buyBeer(Blanc blanc); μ΄λ κ² νμ
μ λ°λ‘ μμ±νλ©΄ λ²κ±°λ‘μ
//void buyBeer(Stella stella);
void buyBeer(Beer beer){
if (money<beer.price){
System.out.println("μμ‘ λΆμ‘±");
return;
}
money -= beer.price;
System.out.println(beer+" ꡬμ
μλ£");
}
}
μ μ½λλ₯Ό 보면 Customer
ν΄λμ€μ λ©μλμΈ buyBeerμ
맀κ°λ³μ νμ
μ νμ ν΄λμ€μΈ Blanc
κ³Ό Stella
λ‘ κ°κ° λΆλ¦¬ν΄μ λ°μ§ μκ³ μμλ°μ Beer
νμ
νλλ‘ μ λ¬λ°λλ€.
μ΄λ κ² λ€νμ±μ μ νμ©νλ©΄ λ§₯μ£Όμ μ’ λ₯κ° μμ²λκ² λ§μμ Έλ λ§€λ² λ€λ₯Έ νμ μ 맀κ°λ³μλ₯Ό μ λ¬λ°μ νμκ° μμ΄μ Έμ μ€λ³΅λλ μ½λλ₯Ό μ€μΌ μ μλ€.
'π Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] μ λ€λ¦κ³Ό μμΈ μ²λ¦¬ (0) | 2022.09.16 |
---|---|
[Java] μΆμν(Abstraction) (1) | 2022.09.07 |
[Java] μΊ‘μν π (0) | 2022.09.06 |
[Java] μμ(Inheritance) (0) | 2022.09.06 |
[Java] μμ±μμ λ΄λΆ ν΄λμ€ (4) | 2022.09.05 |