모두CBT

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이다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.