모두CBT

25-2아래 Java 프로그램을 실행하면 콘솔에 무엇이 출력되는지 적으… | 2025년 정보처리기사실기 2회차 기출문제 상세 페이지

7

25-2

아래 Java 프로그램을 실행하면 콘솔에 무엇이 출력되는지 적으시오.

public class Main {
    static class Animal {
        int sound(int n) { return n * 2; }
        static String tag() { return "A"; }
    }

    static class Dog extends Animal {
        int sound(int n) { return n * 3 + 1; }
        String sound(String s) { return s + "!"; }
        static String tag() { return "D"; }
    }

    public static void main(String[] args) {
        Animal pet = new Dog();
        System.out.println(pet.sound(4) + pet.tag() + ((Dog) pet).tag());
    }
}
해설

13AD


[해설]

인스턴스 메서드는 실제 객체 타입으로, static 메서드는 참조 변수의 선언 타입으로 결정된다.

  • pet.sound(4): 실제 객체가 Dog이므로 오버라이딩된 Dog.sound(int) 호출 → 4×3+1 = 13
  • pet.tag(): static은 오버라이딩되지 않고 숨겨질(hiding) 뿐이라 선언 타입 Animal의 tag() → "A"
  • ((Dog) pet).tag(): 식의 타입이 Dog이므로 Dog.tag() → "D"

13 + "A"에서 문자열 연결이 시작되어 결과는 13AD다. sound(String)은 오버로딩으로 추가된 메서드라 이 호출과 관계없다.

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