58. 인터페이스 배열로 규칙 차례로 적용하기

다음 Java 프로그램의 실행 결과를 쓰시오.

1interface Rule {
2 int apply(int x);
3
4 default String name() {
5 return "R";
6 }
7}
8
9class Twice implements Rule {
10 public int apply(int x) {
11 return x * 2;
12 }
13}
14
15class Minus implements Rule {
16 int d;
17
18 Minus(int d) {
19 this.d = d;
20 }
21
22 public int apply(int x) {
23 return x - d;
24 }
25
26 public String name() {
27 return "M" + d;
28 }
29}
30
31class Square implements Rule {
32 public int apply(int x) {
33 return x * x;
34 }
35
36 public String name() {
37 return "S";
38 }
39}
40
41public class Main {
42 public static void main(String[] args) {
43 Rule[] rules = {new Minus(3), new Twice(), new Square(), new Minus(10)};
44 int v = 5;
45 for (Rule r : rules) {
46 v = r.apply(v);
47 System.out.println(r.name() + ":" + v);
48 }
49 System.out.println("최종=" + v);
50 }
51}

해설을 먼저 보면 이후 정답 시 점수가 50%만 반영됩니다.