java 프로그래밍
제 22장 인터페이스 구현
jeongho son
2019. 4. 8. 23:02
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
인터페이스 구현
개발코드가 인터페이스 메소드를 호출하면 인터페이스는 객체의 메소드를 호출한다.
객체는 인터페이스에서 정의된 추상메소드와 동일한 메소드 이름,매개타입,리턴아입을 가진 실체 메소드를 가지고 있어야한다.
이러한 객체를 인터페이스 구현 (implement)객체라고 하고, 구현 객체를 생성하는 클래스를 구현 클래스라고 한다.
구현 클래스
구현 클래스는 보통의 클래스와 동일한데, 인터페이스 타입으로 사용할수 있음을 알려주기위해
클래스 선언 부에 implements 키워드를 추가하고 인터페이스명을 명시해야한다.
public class 구현클래스명 implements 인터페이스명{
//인터페이스에 선언된 추상메소드의 실체 메소드 선언
}
인터페이스 상속
인터페이스도 다른 인터페이스를 상속할수있다.
인터페이스는 클래스와 달리 다중 상속을 허용한다.
extends 키워드 뒤에 상속할 인터페이스들을 나열할 수있다.
ex)
public interface 하위인터페이스 extends 상위인터페이스1,상위인터페이스2{...}
package son;
public interface InterfaceA {
public void methodA();
}
package son;
public interface InterfaceB {
public void methodB();
}
package son;
public interface InterfaceC extends InterfaceA,InterfaceB {
public void methodC();
}
package jeongho;
public class ImplementationC implements InterfaceC{
@Override
public void methodA() {
System.out.println("ImplementationC-methodA() 실행 ");
}
@Override
public void methodB() {
System.out.println("ImplementationC-methodB() 실행 ");
}
@Override
public void methodC() {
System.out.println("ImplementationC-methodC() 실행 ");
}
}
package son;
public class Ex {
public static void main(String[] args) {
ImplementationC imp = new ImplementationC();
InterfaceA ia = imp;
ia.methodA();
System.out.println();
InterfaceB ib = imp;
ib.methodB();
System.out.println();
InterfaceC ic = imp;
ic.methodA();
ic.methodB();
ic.methodC();
System.out.println();
}
}
출력값
ImplementationC-methodA() 실행
ImplementationC-methodB() 실행
ImplementationC-methodA() 실행
ImplementationC-methodB() 실행
ImplementationC-methodC() 실행
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none; color:white">cs |