OCJP (1Z0-851 / 2012-08-28 / Exam C) - 11 번
관련 이론 및 문법
(extends VS implements 참고)
http://kkikkodev.tistory.com/84
문제 의도
어떤 클래스가 Data 인터페이스와 Info 클래스를 적합하게 사용하고 있는지를 보기에서 고르는 문제입니다.
답안
A
풀이 방법
일단, Data 인터페이스의 안에는, public void load(); 라는 추상 메소드가 있습니다. 그리고, Info 추상 클래스에도, public abstract void load(); 라는 추상 메소드가 있습니다. 인터페이스에는 무조건 추상 메소드만 올 수 있으므로, 결과적으로 이 둘은 같은 추상 메소드를 가지고 있는 것입니다.
먼저, 어떤 클래스에서 클래스와 인터페이스를 동시에 상속하려면, 먼저 클래스부터 상속해야 합니다. 클래스 상속은 extends 키워드를 사용하여 하고, 인터페이스 상속은 implements 키워드를 사용해서 합니다. 이에 부합하지 않는 보기인 B, D, E 는 답안 후보에서 제외됩니다.
그리고, load 메소드는 static 메소드가 아니므로, 클래스명.load() 이런식의 메소드 정의는 올 수가 없습니다. 따라서, C 와 F 또한 답안 후보에서 제외됩니다.
추상 클래스의 추상 메소드와 인터페이스의 추상 메소드가 같은 형태라면, 이를 상속하는 쪽에서는 둘 중 하나만 overriding 하면 됩니다. 왜냐하면 추상 메소드는 말 그대로 body 가 없는 껍데기 형태이고, 실제로 수행되는 것은 overriding 한 메소드이기 때문입니다.
따라서, public void load(){...} 형태로 method overriding 한 A 가 답안이 됩니다.