24-1아래 Java 프로그램이 실행될 때, 실제로 수행되는 생성자·메… | 2024년 정보처리기사실기 1회차 기출문제 상세 페이지
1
24-1
아래 Java 프로그램이 실행될 때, 실제로 수행되는 생성자·메서드·문장을 수행 순서대로 번호로 적으시오. (단, 같은 번호를 두 번 쓰지 않으며 수행되지 않는 번호는 적지 않는다.)
class Unit {
int atk, def;
Unit(int atk, int def) { // ①
this.atk = atk;
this.def = def;
}
int power() { // ②
return atk * def + bonus();
}
int bonus() { // ③
return 0;
}
}
class Tank extends Unit {
int hp;
Tank(int hp) { // ④
super(hp - 1, hp);
}
int power(int boost) { // ⑤
return hp * boost;
}
int bonus() { // ⑥
return atk % 3;
}
}
public class Main {
public static void main(String[] args) { // ⑦
Unit u = new Tank(5); // ⑧
System.out.println(u.power()); // ⑨
}
}해설
⑦ → ⑧ → ④ → ① → ⑨ → ② → ⑥
[해설]
main(⑦)에서 new Tank(5)(⑧)를 만나면 Tank 생성자(④)가 호출되고, 그 첫 줄의 super가 부모 생성자 Unit(①)을 먼저 실행한다. atk = 4, def = 5가 된다.
⑨에서 u.power()를 부르면 Tank에는 인자 없는 power()가 없으므로 Unit.power()(②)가 실행된다. Tank의 power(int)(⑤)는 매개변수가 다른 오버로딩이라 호출되지 않는다.
power() 안의 bonus()는 Tank가 오버라이딩했으므로 Tank.bonus()(⑥)가 실행되고 Unit.bonus()(③)는 건너뛴다. 출력값은 4 × 5 + 4 % 3 = 21이다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.