정처기 실기 문제엔 다음과 같은 유형의 프로그래밍 문제가 나온다.
// 다음 프로그램의 실행 순서가 어떻게 되는지 맞춰라!
// 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``가 된다.
``Parent``에 있는 ``get()``가 ``Child``에서 ``getT(int n)``으로 오버로딩 됐기 때문이다.
같은 ``getT``라는 이름을 가지지만 받는 파라미터의 수가 다르다.
그래서 별개의 함수로 취급이 된다.
나도 별 생각이 없었다가 실기를 준비하다 보니 아차 싶었던 부분이다.
학교에서도 나름 힘주면서 교수님이 설명했었던 개념이기도 했다.
모의고사에서 한두번 정도 낚여준 것 같다...
함수 내부가 재정의 되는 것은 물론이고 파라미터도 중요한 점이기 때문에,
이런 문제에 절대 낚여선 안 되겠다.
'Camp > T.I.L.' 카테고리의 다른 글
[TIL #28] Investments in 2016 (0) | 2024.10.23 |
---|---|
[TIL #27] 호텔 대실 (0) | 2024.10.21 |
[TIL #25] 전력망을 둘로 나누기 (0) | 2024.10.16 |
[TIL #24] 행렬 테두리 회전하기 (0) | 2024.10.14 |
[TIL #23] Product Price at a Given Date (0) | 2024.10.10 |