문제
다음 Java 코드의 실행 결과를 쓰시오.
Javaabstract class Base { static String value = "Base"; abstract String process(); String getValue() { return value + process(); } } interface Handler { String value = "Handler"; default String process() { return value; } } class Impl extends Base implements Handler { static String value = "Impl"; String process() { return value; } } public class Main { public static void main(String[] args) { Handler h = new Impl(); Base b = new Impl(); System.out.println(h.value + " " + b.getValue()); } }
정답
Handler BaseImpl
Handler BaseImplHandlerBaseImpl
해설
h.value는 Handler 인터페이스의 상수 "Handler"를 정적 바인딩으로 접근. b.getValue()는 Base 클래스의 메서드로 Base.value("Base")와 오버라이딩된 Impl.process()("Impl")를 합쳐 "BaseImpl" 반환. static 필드는 각각 독립적으로 존재하며, 인터페이스 필드는 public static final로 정적 바인딩됨.