2012년 10월 17일 수요일

OCJP 문제풀이 - Question 17


QUESTION 17
Given:

public class Blip {
  protected int blipvert(int x) { return 0; }
}
class Vert extends Blip {
//insert code here
}

Which five methods, inserted independently at line 5, will compile? (Choose five.)

A. public int blipvert(int x) { return 0; }
B. private int blipvert(int x) { return 0; }
C. private int blipvert(long x) { return 0; }
D. protected long blipvert(int x) { return 0; }
E. protected int blipvert(long x) { return 0; }
F. protected long blipvert(long x) { return 0; }
G. protected long blipvert(int x, int y) { return 0; }

Answer: ACEFG
Section: All

Explanation/Reference:

오버라이드, 오버로드에 관한 문제이다.

A - 오버라이드시에 접근자는 동일하거나 더 넓은 범위여야 한다. public은 protected보다 더 넓은 접근자이기때문에 무사히 컴파일 된다.
B - 접근자가 부모보다 더 좁은 private 이다. 에러발생.
C - 오버로드는 매개변수의 타입이나 개수가 다르기만 하면 된다.
D - 매개변수가 같으므로 오버라이드를 적용시키려는건데, 리턴형태가 다르므로 에러발생
E, F, G - 매개변수가 다르므로 다른 요소는 상관없이 무사히 컴파일 된다.

블로그 보관함