본문 바로가기
자격증/정보처리기사

[정보처리기사] 실기 24년 1회 JAVA 문제 16번 해설

by ewaterland 2025. 4. 19.

문제 16번. 출력결과

class classOne {
    int a, b;
 
    public classOne(int a, int b) {
        this.a = a;
        this.b = b;
    }
 
    public void print() {
        System.out.println(a + b);
    }
 
}
class classTwo extends classOne {
    int po = 3;
    
    public classTwo(int i) {
        super(i, i+1);
    }
 
    public void print() {
        System.out.println(po*po);
    }
}
 
public class main {  
    public static void main(String[] args) {
        classOne one = new classTwo(10);
        one.print();
    }
}

 

더보기
더보기

[ 답 ]

9

 

[ 풀이 ]

이 문제는 상속, 생성자 호출, 그리고 메서드 오버라이딩에 대한 개념을 다루고 있다.

 

main에서 classTwo 객체를 생성하면서 classOne 타입으로 업캐스팅을 한다.

이 경우, 실제 객체는 classTwo 이기 때문에 메서드를 실행할 때 classTwo를 참조하여 classTwo에 있는 print()를 실행한다.

따라서 출력값은 po*po = 3*3 = 9 가 된다.

 

요약

super() 부모 클래스 생성자 호출
업캐스팅 classTwo 객체를 classOne 타입 변수로 참조
오버라이딩 부모의 print()를 자식이 재정의했기 때문에 자식 버전 호출
실제 실행 메서드 항상 실제 객체 타입 기준으로 호출됨 (동적 바인딩)