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

[정보처리기사] 실기 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()를 자식이 재정의했기 때문에 자식 버전 호출
실제 실행 메서드 항상 실제 객체 타입 기준으로 호출됨 (동적 바인딩)

 

반응형