728x90
반응형
2024년 1회 정보처리기사 실기 기출문제
문제
다음 JAVA 코드의 실행 순서를 중복 번호 없이 빈칸에 작성하시오.
실행 순서 : 5 → ( ) → ( ) → ( ) → ( ) → ( )
class Parent {
int x, y;
Parent(int x, int y) { (_1_)
this.x = x;
this.y = y;
}
int getT() { (_2_)
return x * y;
}
}
class Child extends Parent {
int x;
Child(int x) { (_3_)
super(x + 1, x);
this.x = x;
}
int getT(int n) { (_4_)
return super.getT() + n;
}
}
class Main {
public static void main(String[] args) { (_5_)
Parent parent = new Child(3); (_6_)
System.out.println(parent.getT()); (_7_)
}
}
정답
5 → 6 → 3 → 1 → 7 → 2
반응형
해설
class Parent {
int x, y;
Parent(int x, int y) { (_1_) // 생성자
this.x = x;
this.y = y;
}
int getT() { (_2_) // 메소드
return x * y;
}
}
class Child extends Parent {
int x;
Child(int x) { (_3_) // 생성자
super(x + 1, x);
this.x = x;
}
int getT(int n) { (_4_) // 메소드
return super.getT() + n;
}
}
class Main {
public static void main(String[] args) { (_5_) // 메인
Parent parent = new Child(3); (_6_)
System.out.println(parent.getT()); (_7_)
}
}
1️⃣ main 메서드 실행 (_5_)
public static void main(String[] args) { (_5_)
프로그램이 시작되면서 main 메서드가 실행됩니다.
2️⃣ Child 객체 생성 (_6_)
Parent parent = new Child(3);
- Child 클래스의 생성자가 호출됩니다.
- 매개변수 3이 Child(int x) 생성자의 x에 전달됩니다.
- Parent 타입의 변수 parent가 자식 클래스의 객체 Child(3)를 참조합니다.
즉, parent 변수는 Parent 타입이지만, 실제로 참조하는 객체는 Child입니다.
따라서 부모 클래스의 기능만 사용할 수 있지만, 오버라이딩된 메서드는 Child의 것이 실행됩니다.
3️⃣ Child 생성자 실행 (_3_)
Child(int x) {
super(x + 1, x); // Parent 생성자 호출
this.x = x;
}
- 6번 코드( new Child(3) )가 실행되어 매개변수 3이 Child(int x)의 x로 전달됩니다.
- super()는 부모 클래스(Parent)의 생성자를 호출하는 코드입니다. 여기서는 super(x + 1, x);가 실행되면서 Parent의 생성자가 호출됩니다.
- x + 1 → 3 + 1 = 4
- x → 3
- super(4, 3);가 실행되며 Parent 클래스의 x = 4, y = 3으로 초기화됩니다.
Parent(int x, int y) {
this.x = x; // x = 4
this.y = y; // y = 3
}
- 여기서 this.x는 Child 클래스의 인스턴스 변수 x 를 의미합니다. 즉, this.x = x;를 통해 Child 클래스의 x에 전달된 매개변수 값을 저장합니다.
- 현재 상태:
- Child 클래스의 x → 3
- Parent 클래스의 x → 4
- Parent 클래스의 y → 3
728x90
4️⃣ Parent 생성자 실행 (_1_)
Parent(int x, int y) {
this.x = x;
this.y = y;
}
- 3번 코드가 실행되어, super(4, 3);이 실행되면서 Parent(4, 3) 생성자가 호출됨
- this.x는 Parent 클래스의 멤버 변수 x 를 의미합니다. 여기서 this는 현재 객체(Parent 객체)를 가리킵니다. 즉, 전달된 매개변수 x 값을 Parent 클래스의 x 변수에 저장합니다.
- 위와 같은 방식으로 this.y = y;를 실행하면서 매개변수 y 값을 Parent 클래스의 멤버 변수 y에 저장합니다.
- 현재 상태:
- Parent 클래스의 x = 4
- Parent 클래스의 y = 3
5️⃣ 메서드 호출 (_7_)
System.out.println(parent.getT());
- parent.getT()의 결과 값을 계산한 후 콘솔에 출력하는 역할을 합니다.
- parent는 Parent 타입으로 선언되었기 때문에 Parent 클래스의 getT() 메서드(②)가 호출됩니다.
6️⃣ getT 메서드 실행 (_2_)
int getT() {
return x * y;
}
- 현재 parent 객체는 new Child(3);을 통해 생성되었습니다. 이 과정에서 Parent의 x와 y 값은 다음과 같이 초기화되었습니다.
- Parent(int x, int y) { // super(x+1, x) → super(4, 3)
this.x = x; // x = 4
this.y = y; // y = 3
}
- Parent(int x, int y) { // super(x+1, x) → super(4, 3)
- 따라서 getT() 실행 시, 4 * 3 = 12 즉, 12가 반환됩니다.
- 최종적으로, System.out.println(12);이므로 12가 출력됩니다.
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
728x90
반응형
'코딩일기 > 자격증' 카테고리의 다른 글
[정보처리기사] [ C ] 구조체와 포인터를 활용한 복리 계산 문제 | 복리 알고리즘 | 2024년 1회 정보처리기사 실기 기출문제 (0) | 2025.04.04 |
---|---|
[정보처리기사] [ C ] 구조체와 포인터 활용 | 복리 알고리즘 | 2024년 1회 정보처리기사 실기 기출문제 (0) | 2025.04.03 |
[정보처리기사] 페이지 교체 알고리즘 | LRU와 LFU 비교 | 2024년 1회 정보처리기사 실기 기출문제 (0) | 2025.04.02 |
[정보처리기사] SQL | JOIN 기본 개념과 종류 | 정보처리기사 실기 기출문제 (0) | 2025.04.01 |
[정보처리기사] 서브넷과 서브넷 마스크 | 2024년 1회 정보처리기사 실기 기출문제 (0) | 2025.03.27 |