정보 처리기사 24년 1회 10번 문제

2024. 7. 9. 12:57자격증 연습/정보처리기사 실기 대비 - 문제풀이

class Parent {
    int x, y;

    Parent(int x, int y) { ①
        this.x=x;
        this y=y;
    }

    int getT() { ②
        return x*y;
    }
}
 
 
 
 class Child extend Parent {
    int x;

    Child (int x) { ③
        super(x+1, x);
        this.x=x;
    }

    int getT(int n){ ④
        return super.getT()+n;
    }
}



class Main {
    public static void main(String[] args) { ⑤
        Parent parent = new Child(3); ⑥
        System.out.println(parent.getT()); ⑦
    }
}
 

 

 

소스 코드의 파일은 main 에서 부터 시작합니다.(5번)

그러므로 객체 생성인 Parent parent = new Child(3);  이 먼저 시행됩니다.(6번)

 

Parent parent = new Child(3); 는 부모클래스 객체 parent 는 자식 클래스를 인스턴스로 가지므로 다음 구문은 자식 클래스로 넘어갑니다.

 

그다음  자식 클래스의 child 생성자를 int 형 변수 3을 인수로 가지는 생성자를 가지므로 child 생성자가 실행됩니다.(3번)

 

child 생성자 내부에서

super(x+1, x); 로 부모 클래스의 생성자를 호출하였으니 부모 클래스의 생성자(1번)를 호출하게 됩니다.

 

매개변수 2개를 가지는  부모 클래스의 parent 생성자를 호출한다음 this 로 변수 x을  초기화 해줍으로써

 Parent parent = new Child(3); 의 과정이 끝이난다음 

 

System.out.println(parent.getT()); (7번)을 실행합니다.

 

parent.getT()은  부모 메서드를 호출니다. (2번)

 

시그니처가 자식 클래스의 getT(int n) 와 다르므로 오버라이딩은 일어나지 않습니다.

 

시그니처: 매개변수의 타입과 순서

 

 

 

실행 순서 : 5 → (6) → (3 ) → (1) → (7) → (2)