문제
다음 Java 프로그램의 실행 결과는?
interface Drawable { void draw(); default void display() { System.out.print("Interface "); } } class Rectangle implements Drawable { int width = 4, height = 6; public void draw() { System.out.print(width * height); } public void display() { System.out.print("Rectangle "); } } public class Main { public static void main(String[] args) { Drawable d = new Rectangle(); d.display(); d.draw(); } }
① Interface 24 ② Rectangle 24 ③ Rectangle 0 ④ 컴파일 오류 (인터페이스 메서드 재정의 불가)
정답
2번
해설
Rectangle 클래스에서 인터페이스의 default 메서드 display()를 오버라이드하여 "Rectangle "을 출력하고, draw() 메서드에서 width * height = 4 * 6 = 24를 출력한다. 인터페이스의 default 메서드는 구현 클래스에서 재정의 가능하다.