[ μλ° μΊμ€ν ]
- μλ°μμμ μΊμ€ν μ΄λ κ°μ²΄λ€μ ν λ³νμ μλ―Έ
- μμ κ΄κ³μ κ°μ²΄λ€μ νν¨
- νμ ν΄λμ€(ν° λ©λͺ¨λ¦¬) → μμ ν΄λμ€(μμ λ©λͺ¨λ¦¬) νλ³ν
· 묡μμ μΌλ‘ κ°λ₯
· μ μΊμ€ν μ μλ―Έ
- μμ ν΄λμ€(μμ λ©λͺ¨λ¦¬) → νμ ν΄λμ€(ν° λ©λͺ¨λ¦¬) νλ³ν
· λͺ μμ μΌλ‘ μ μΈν΄μΌ ν¨
· Casting μ°μ°μμΈ ( )λ₯Ό μ¬μ©νμ¬ ν λͺ μ νμ
· λ€μ΄μΊμ€ν μ μλ―Έ
κΈ°λ³Έλ°μ΄ν° νμ μ ν λ³νκ³Ό ꡬλΆ
μ°Έκ³ π [Java] μλ° νλ³ν
[ μ μΊμ€ν (Upcasting) ]
- μμ ν΄λμ€λ‘μ ν λ³ν
- νμ ν΄λμ€(sub class) → μμ ν΄λμ€ (super class)
(νμ ν΄λμ€λ μμ ν΄λμ€μ μλΈνμ )
- μ»΄νμΌλ¬μ μν΄ μλ λ³ν
- μμ κ³μΈ΅μ μΈ‘λ©΄μ κ³ λ €
[ μ μΊμ€ν μμ ]
class Animal{
void display() {
System.out.println("Animal ν΄λμ€");
}
}
class Ant extends Animal{
void display() {
System.out.println("Ant ν΄λμ€");
}
void displayAnt() {
System.out.println("λ¬Όκ°λ―Έ μ
λλ€.");
}
}
public class TestCode {
public static void main(String[] args) {
Ant ant = new Ant();
ant.display();
ant.displayAnt();
// μμ κ΄κ³μμμ μ°Έμ‘° λ€νμ±μ μ΄μ©ν μ μΈ (1)
Animal ant2 = new Ant();
ant2.display();
// ant2.displayAnt(); Ant ν΄λμ€μ μμν΄λμ€μΈ Animal ν΄λμ€λ‘ μ μΈλμμΌλ―λ‘ μ κ·Ό λ©€λ² κ°μ
// λ³μ μ
μΊμ€ν
μ μ΄μ©ν μ μΈ (2)
Animal upcasting_ant = ant;
// -- μ΄ λ Animal ν΄λμ€μ display()μ μ κ·Ό x
// -- Overrideλ Ant ν΄λμ€μ display()λ‘ μ€ν λ¨
upcasting_ant.display();
// upcasting_ant.displayAnt();
}
}
/* [μΆλ ₯ κ²°κ³Ό]
Ant ν΄λμ€
λ¬Όκ°λ―Έ μ
λλ€.
Ant ν΄λμ€
Ant ν΄λμ€
*/
μ€λ²λΌμ΄λ© νΉμ±μ μ½λκ° μ€ννλ λ°νμ νκ²½μμ
λμ λ°μΈλ© λμκΈ° λλ¬Έμ
μ μΊμ€ν μΈμ€ν΄μ€μΈ ant2μ upcasting_antμ
μ€λ²λΌμ΄λ© λ©μλμΈ display() νΈμΆ μ
Animal ν΄λμ€μ display() { "Animal ν΄λμ€" }κ° μλ
Ant ν΄λμ€μ display() { "Ant ν΄λμ€" } κ° νΈμΆ
[ μ μΊμ€ν μ μ΄μ ]
- 곡ν΅μ μΌλ‘ κ΄λ¦¬ κ°λ₯ν μμ λ€μ κ°μνλ νΈλ€λ§ κ°λ₯
- λ§μ½ [κ·Έλ¦Ό1]κ³Ό κ°μ μμ κ΄κ³μ ν΄λμ€λ€μ΄ μλ€ κ°μ ν κ²½μ°

- κΈ°μ‘΄μ μμ ν΄λμ€λ€μ μλ‘ λ€λ₯Έ κ°μ²΄λ₯Ό μ μΈνμ¬ μ¬μ©νμ΄μΌ ν¨
[ κΈ°μ‘΄μ κ²½μ° ]
class Colors{ }
class White extends Colors{ }
class Blue extends Colors{ }
class Red extends Colors{ }
public class TestCode {
public static void main(String[] args) {
White[] white = new White[10];
white[0] = new White();
white[1] = new White();
Blue[] blue = new Blue[10];
blue[0] = new Blue();
blue[1] = new Blue();
Red[] red = new Red[10];
red[0] = new Red();
red[1] = new Red();
}
}
μ΄ λ μ μΊμ€ν μ νμ©νλ©΄ 곡ν΅μ νμ μΌλ‘ λ¬Άμ΄ κ΄λ¦¬ κ°λ₯
[ μ μΊμ€ν νμ© ]
class Colors{ }
class White extends Colors{ }
class Blue extends Colors{ }
class Red extends Colors{ }
public class TestCode {
public static void main(String[] args) {
// μμ κ΄κ³λ₯Ό λ§Ίμ΄ λΆλͺ¨ ν΄λμ€λ‘μ μ
μΊμ€ν
μ΄ κ°λ₯ν κ²½μ°
// νλμ 곡ν΅λ νμ
μΌλ‘ λ¬Άμ΄ κ΄λ¦¬ κ°λ₯
// κ°λ
μ± ↑ μ μ§λ³΄μ ↑
Colors[] colors = new Colors[10];
colors[0] = new White();
colors[1] = new White();
colors[2] = new Blue();
colors[3] = new Blue();
colors[4] = new Red();
colors[5] = new Red();
}
}
[ λ€μ΄μΊμ€ν (Downcasting) ]
- μμ ν΄λμ€ → νμν΄λμ€λ‘μ ν λ³ν
- μμΉμ μΌλ‘λ λΆκ°λ₯νλ λͺ μμ μΊμ€ν μ ν΅ν΄ ν΄κ²°
[ λ€μ΄ μΊμ€ν μμ ]
class Animal{
void display() {
System.out.println("Animal ν΄λμ€");
}
}
class Ant extends Animal{
void display() {
System.out.println("Ant ν΄λμ€");
}
void displayAnt() {
System.out.println("λ¬Όκ°λ―Έ μ
λλ€.");
}
}
public class TestCode {
public static void main(String[] args) {
// Animal(upcasting_ant) ← Ant(new Ant())λ‘ μ
μΊμ€ν
Animal upcasting_ant = new Ant();
upcasting_ant.display();
// Ant(down_ant) ← Animal(upcasting_ant)λ‘ λ€μ΄ μΊμ€ν
Ant down_ant = (Ant)upcasting_ant;
down_ant.displayAnt();
// ==
((Ant)upcasting_ant).displayAnt();
}
}
/* [μΆλ ₯ κ²°κ³Ό]
Ant ν΄λμ€
λ¬Όκ°λ―Έ μ
λλ€.
λ¬Όκ°λ―Έ μ
λλ€.
*/
# μ°Έκ³ λΈλ‘κ·Έ : https://inpa.tistory.com/entry/JAVA-β-μ μΊμ€ν -λ€μ΄μΊμ€ν -νλ°©-μ΄ν΄νκΈ°