자바 인터페이스 연습문제 조금 남은거 하고 이제 DB로 들어간다리~!
if ( p instanceof CC) { //if절 각각따로본다! -> p가 CC출신이냐?
( (CC)p ).m3();
}
if ( p instanceof DD) { //if절 각각따로본다! -> p가 DD출신이냐?
( (DD)p ).m4();
}
GalaxyTab1 gt3 = new GalaxyTab1();
Callable ca2 = gt3; //gt3는 GalaxyTab1에 담겨져있음
if (ca2 instanceof GalaxyTab1) { //ca2 에 지금 담겨져있는 애가 GalaxyTab 몸통을 가지고 있냐 GalaxyTab으로 강제 형변환이 가능한 녀석이냐
//ca2가 GalaxyTab1출신이냐?
}
BluetoothConnectable bt2 = gt3;
//gt3는 GalaxyTab1에 담겨져있음? 위에서 Callable에 담겨져있는 상태로 변한거 아닌가..X
//ca2,bt2는 Q167에 담겨있는 gt3를 가리키고 있는것 -> gt3는 그냥 지 타입이 있는거지
if (bt2 instanceof GalaxyTab1) { //bt2 에 지금 담겨져있는 애가 GalaxyTab 몸통을 가지고 있냐 GalaxyTab으로 강제 형변환이 가능한 녀석이냐
//bt2가 GalaxyTab1출신이냐?
}
static void action(Robot r) { //메인이 static이라서 static메소드만 쓸수있어!
//부모타입 객체가 DanceRobot,SingRobot,DrawRobot 담을수 있으니까!
if (r instanceof DanceRobot) { //r을 DanceRobot으로 바꿀 수 있냐?/강제형변환도 가능하냐? (DanceRobot 몸통이냐?)
//r이 DanceRobot출신이냐?
( (DanceRobot) r).dance(); //r이 부모클래스니까 자식클래스 메소드를 못가져다 쓰지 그래서 강제 형변환!
//dance()메소드는 Robot에 없고 DanceRobot에만 있으니까
}
if (r instanceof SingRobot) { //r을 SingRobot으로 바꿀 수 있냐?/강제형변환도 가능하냐? (SingRobot 몸통이냐?)
//r이 SingRobot출신이냐?
((SingRobot) r).sing();
}
if (r instanceof DrawRobot) { //r을 DrawRobot으로 바꿀 수 있냐?/강제형변환도 가능하냐? (DrawRobot 몸통이냐?)
//r이 DrawRobot출신이냐?
((DrawRobot) r).draw();
}
}
🖐p instanceof CC => p가 CC출신이냐? (몸통을 가지고 있냐?) 라고 생각하자......후......