λ€μ΄ μΊμ€ν
μ΄λ?
- μμ ν΄λμ€νμΌλ‘ λ³ν λμλ νμ ν΄λμ€λ₯Ό λ€μ μλ μλ£νμΌλ‘ λ³ννλ κ²
instanceof
- ν λ³ν κ°λ₯ μ¬λΆ νμΈ(μ°Έμ‘° λ³μκ° μ°Έμ‘°νκ³ μλ κ°μ²΄(μΈμ€ν΄μ€)μ μ€μ νμ
μ μκΈ° μν΄ μ¬μ©)
μ¬μ΄ μλ₯Ό λ€μ΄.. μμ κ΄κ³λ₯Ό μκ°ν΄ 보면 λͺ¨λ μΈκ°μ λλ¬Όμ΄μ§λ§ λͺ¨λ λλ¬Όμ μΈκ°μ΄ μλλλ€.
λ°λΌμ λ€μ΄ μΊμ€ν
μ νκΈ° μ μ μμ ν΄λμ€λ‘ ν λ³νλ μΈμ€ν΄μ€μ μλ μλ£νμ νμΈν΄μΌ λ³νν λ μ€λ₯λ₯Ό λ§μ μ μμ΅λλ€.
public class Animal {
public void move() {
System.out.println("λλ¬Όμ΄ μμ§μ
λλ€.");
}
}
class Human extends Animal {
@Override
public void move() {
System.out.println("μ¬λμ λ λ°λ‘ κ±·μ΅λλ€.");
}
public void readBook() {
System.out.println("μ¬λμ΄ μ±
μ μ½μ΅λλ€.");
}
}
class Tiger extends Animal {
@Override
public void move() {
System.out.println("νΈλμ΄κ° λ€ λ°λ‘ λλλ€.");
}
public void hunting() {
System.out.println("νΈλμ΄κ° μ¬λ₯μ ν©λλ€.");
}
}
class Eagle extends Animal {
@Override
public void move() {
System.out.println("λ
μλ¦¬κ° νλμ λ©λλ€.");
}
public void fly() {
System.out.println("λ
μλ¦¬κ° λ κ°λ₯Ό μ ν΄κ³ λ©λ¦¬ λ μκ°λλ€.");
}
}
import java.util.ArrayList;
public class DownCasting {
ArrayList<Animal> aniList = new ArrayList<>();
public static void main(String[] args) {
DownCasting downCasting = new DownCasting();
downCasting.addAnimal();
downCasting.testCasting();
}
public void addAnimal() {
// ArrayListμ μΆκ°λλ©΄μ νμ
μ΄ Animal νμΌλ‘ λ³ν
aniList.add(new Human());
aniList.add(new Tiger());
aniList.add(new Eagle());
for(Animal e : aniList) e.move();
}
public void testCasting() {
for(int i = 0; i < aniList.size(); i++) {
Animal ani = aniList.get(i); // Listμ ν΄λΉ μΈλ±μ€μ κ°μ κ°μ Έμ΄
// Human νμ
μΌλ‘ νλ³ν κ°λ₯ μ¬λΆ λ¬Όμ΄λ΄..(= λ€μ΄μΊμ€ν
)
if(ani instanceof Human) {
Human h = (Human) ani;
h.readBook();
} else if(ani instanceof Tiger) {
Tiger t = (Tiger) ani;
t.hunting();
} else if(ani instanceof Eagle) {
Eagle e = (Eagle) ani;
e.fly();
} else {
System.out.println("μ§μ λμ§ μλ ν μ
λλ€.");
}
}
}
}
μ¬λμ λ λ°λ‘ κ±·μ΅λλ€.
νΈλμ΄κ° λ€ λ°λ‘ λλλ€.
λ
μλ¦¬κ° νλμ λ©λλ€.
μ¬λμ΄ μ±
μ μ½μ΅λλ€.
νΈλμ΄κ° μ¬λ₯μ ν©λλ€.
λ
μλ¦¬κ° λ κ°λ₯Ό μ ν΄κ³ λ©λ¦¬ λ μκ°λλ€.