출처: https://bumcrush.tistory.com/182 [맑음때때로 여름]

 

  • 일종의 추상클래스, 추상클래스보다 추상화 정도가 높다
  • 실제로 구현된 것이 전혀 없는 기본 설계도
  • 추상메서드와 상수만을 멤버로 가질 수 있다
  • 인스턴스를 생성할 수 없고, 클래스 작성에 도움을 줄 목적으로 작성
  • 미리 정해진 규칙에 맞게 구현하도록 표준을 제시하는데 사용된다.
  • 클래스처럼 상속 가능 / 다중상속 허용
  • Object클래스와 같은 최고 조상이 없다

 

예제1

 

예제2) 인터페이스 내에 선언된 변수는 무조건 public static final로 선언된다.

원래 case 1: case 2: - 같은 형식이었는데 좀 더 알아보기 쉽게 이렇게 바꿀 수도 있다.

 

예제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(11);
        PointTwo pos2 = new PointTwo(22);
        PointOne pos3 = new PointOne(33);
        PointTwo pos4 = new PointTwo(44);
        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

+ Recent posts