- 일종의 추상클래스, 추상클래스보다 추상화 정도가 높다
- 실제로 구현된 것이 전혀 없는 기본 설계도
- 추상메서드와 상수만을 멤버로 가질 수 있다
- 인스턴스를 생성할 수 없고, 클래스 작성에 도움을 줄 목적으로 작성
- 미리 정해진 규칙에 맞게 구현하도록 표준을 제시하는데 사용된다.
- 클래스처럼 상속 가능 / 다중상속 허용
- Object클래스와 같은 최고 조상이 없다
예제2) 인터페이스 내에 선언된 변수는 무조건 public static final로 선언된다.
원래 case 1: case 2: - 같은 형식이었는데 좀 더 알아보기 쉽게 이렇게 바꿀 수도 있다.
인터페이스를 이용한 마킹의 효과
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
package Oct17;
public class interfaceMark {
public static void main(String[] args) {
PointOne pos1 = new PointOne(1, 1);
PointTwo pos2 = new PointTwo(2, 2);
PointOne pos3 = new PointOne(3, 3);
PointTwo pos4 = new PointTwo(4, 4);
String test = "test";
ClassPrinter.print(pos1);
ClassPrinter.print(pos2);
ClassPrinter.print(pos3);
ClassPrinter.print(pos4);
ClassPrinter.print(test);
}
}
interface UpperCasePrintable {
// 마킹하려고하는 건 거의 ~able로 이름을 만듦
}
class PointOne implements UpperCasePrintable {
private int xPos;
private int yPos;
PointOne(int x, int y) {
this.xPos = x;
this.yPos = y;
}
@Override
public String toString() {
return "[x pos: " + xPos + ", y pos : " + yPos + "]";
}
}
class PointTwo {
private int xPos;
private int yPos;
PointTwo(int x, int y) {
this.xPos = x;
this.yPos = y;
}
@Override
public String toString() {
return "[x pos: " + xPos + ", y pos : " + yPos + "]";
}
}
class ClassPrinter {
public static void print(Object obj) {
String str=obj.toString();
// UppercasePrintable 형변환가능여부를 확인 > 대문자로 변경
if(obj instanceof UpperCasePrintable) {
str = str.toUpperCase();
}
System.out.println(str);
}
}
|
cs |
'JAVA > basic' 카테고리의 다른 글
예외처리 / Exception (0) | 2020.10.21 |
---|---|
예외처리 / throw (0) | 2020.10.21 |
예외처리 / try-catch-finally (0) | 2020.10.21 |
추상클래스 / abstract class (0) | 2020.10.20 |
오버라이딩 Override / Overriding & 다형성 (0) | 2020.10.16 |
상속 / extends (0) | 2020.10.15 |
[Singleton] 싱글톤 / 싱글턴 패턴 (0) | 2020.10.15 |