- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathInterfaceReport.java
More file actions
Latest commit
50 lines (37 loc) · 1.38 KB
/
Copy pathInterfaceReport.java
File metadata and controls
50 lines (37 loc) · 1.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
packageweek03.basic;
publicclassInterfaceReport {
publicstaticvoidmain(String[] args) {
System.out.println("<인터페이스 계약과 다중 구현>");
// B-4) 인터페이스 계약과 다중 구현
// 문제: `interface Printable { void print(); }`와
// `interface Exportable { String format(); }`를 정의하고,
// 'Report`가 둘 다 `implements` 하도록 하라. `print()`는 `format()` 결과를 출력한다.
// 문제설명: 인터페이스는 행동 계약만 정의하며 여러 개를 동시에 구현할 수 있다.
// 구현체는 두 계약을 모두 만족해야 하며, 호출부는 인터페이스 타입으로 의존하면 유연성이 커진다.
// 힌트: `interface`, `implements`, 다중 인터페이스 구현, 업캐스팅(Report → Printable/Exportable).
Printablep = newReport("Day1");
p.print();
}
}
// implements -> 계약을 이행하겠다고 선언
classReportimplementsPrintable, Exportable {
privateStringtitle;
Report(Stringtitle){
this.title = title;
}
@Override
publicStringformat() {
returntitle;
}
@Override
publicvoidprint() {
System.out.println(format());
}
}
// 인터페이스 -> 계약서
interfacePrintable { // 출력할 수 있어야함.
voidprint();
}
interfaceExportable { // 문자열로 표현할 수 있어야함.
Stringformat();
}