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)은 오버로딩으로 추가된 메서드라 이 호출과 관계없다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.