2014년 1월 5일 일요일

[7-18] 상속클래스의 다형성

// [7-18] 

//----------------나의 답안--------------------------- // 작동 안함..ㅋㅋㅋㅋㅋㅋㅋ
class Exercise7_18 {
// Exercise7_18.java:10: error: cannot find symbol  이거 뜸.ㅋㅋ
//   location: variable r of type Robot
public static void action (Robot r) {
if(r instanceof DanceRobot)
r.dance();
else if(r instanceof SingRobot)
r.sing();
else if(r instanceof DrawRobot)
r.draw();

//-----------------모범 답안--------------------------
/*
public static void action(Robot r) {
if(r instanceof DanceRobot) {
DanceRobot dr = (DanceRobot)r; 
// Robot 형태니까 형변환을 해서 해당 클레스의 메서드를 사용할 수 있도록 해줘야 한다.
dr.dance();
} else if(r instanceof SingRobot) {
SingRobot sr = (SingRobot)r;
sr.sing();
} else if(r instanceof DrawRobot) {
DrawRobot dr = (DrawRobot)r;
dr.draw();
}
} */
//---------------------------------------------------------



public static void main(String[] args) {
Robot[] arr = { new DanceRobot(), new SingRobot(), new DrawRobot() };

for (int i=0; i < arr.length; i++) {
action(arr[i]);
}
}
}

class Robot{ }

class DanceRobot extends Robot {
void dance() {
System.out.println("춤을 춥니다.");
}
}
class SingRobot extends Robot {
void sing() {
System.out.println("노래를 합니다.");
}
}
class DrawRobot extends Robot {
void draw() {
System.out.println("그림을 그립니다.");
}
}
//-----------------------------------------------------

댓글 없음:

댓글 쓰기