반응형
인터페이스란 일종의 추상 클래스이다. 다만 추상 클래스보다 추상화의 정도가더 크다고 생각하면 된다.
특징
1.멤버는 추상 메소드와 상수만으로 구성된다.
# 인터페이스는 메소드와 상수만을 가지며 필드는 가지지 않는다.
# 메소드는 모두 추상메소드이다. 그러나 메소드 선언 시 abstract 키워드를 생략할 수 있다.
2. 모든 메소드는 public이며 생략이 가능하다.
# 모든 메소드는 public 접근 지정자이다. 주로 생략하여 사용한다.
3. 상수도 public static final을 생략하여 선언할 수 있다.
# 상수는 public static final 속성이며 생략 가능하다.
4. 인터페이스의 객체를 생성할 수 없다.
# 인터페이스는 추상 메소드만 가지기 때문에 원칙적으로 객체를 생성할 수 없다. 그러므로 다음 문장은 오류이다.
ex)
new car();
5. 다른 인터페이스에 상속될 수 있다.
6.인터페이스도 레퍼런스 변수의 타입으로 사용 가능하다.
7. 인터페이스는 다중 상속이 가능하다.
interface (인터페이스) 구현 : 인터페이스의 추상 메소드를 클래스에서 구현하는 것
이때 반드시 모든 추상 메소드를 구현해야한다.
(추상 메소드는 기본적으로 추상 메소드 클래스 안에서 구현이 불가능하기 때문)
ex)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
interface USBMouseInterface {
void mouseMove();
void mouseClick();
}
public class MouseDriver implements USBMouseInterface { // 인터페이스 구현
void mouseMove() { .... }
void mouseClick() { ... }
// 추가적으로 다른 메소드를 작성할 수 있다.
int getStatus() { ... }
int getButton() { ... }
}
|
cs |
다중구현또한 가능하다
ex)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
interface USBMouseInterface {
void mouseMove(); // abstract 생략됨
void mouseClick(); // abstract 생략됨
}
interface RollMouseInterface {
void roll(); // abstract 생략됨
}
// 콤마로 분리하여 상속받는 인터페이스 나열한다.
public class MouseDriver implements RollMouseInterface, USBMouseInterface {
void mouseMove() { .... }
void mouseClick() { ... } // 2개의 인터페이스에 정의된 모든 메소드를 구현해야한다.
void roll() { ... }
// 추가적으로 다른 메소드를 작성할 수 있다.
int getStatus() { ... }
int getButton() { ... }
}
|
cs |
인터페이스 상속
인터페이스도 상속이 가능하다.
ex)
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
|
package mePm;
interface InP_1{
int a = 10; //중복
int b = 20;
int d = 40; //중복
void meth_1();
void meth_2();
}
interface InP_2{
int a = 1000; //중복
void meth_1();
void meth_3();
}
interface InP_3{
int c = 33333;
int d = 44444; //중복
void meth_2();
void meth_3();
}
//interface InCC implements InP_1{
interface InCC extends InP_1,InP_2,InP_3{
int a = 12345; //hiding /*
/* int a = 10; int a = 1000; ?
int b = 20;
int c = 33333;
int d = 40; int d = 44444; ?
void meth_1();
void meth_2();
void meth_3();
*/
}
|
cs |
이와같이 인터페이스 InCC는 InP_1, InP_2, InP_3상속이가능하며동시에 다중상속 또한 가능하다.
반응형
'JAVA' 카테고리의 다른 글
ArrayList 정리 (0) | 2021.01.22 |
---|---|
추상화 클래스와 인터페이스의 공통점 / 차이점 (0) | 2020.09.11 |
캡슐화 /getters and etters (0) | 2020.09.09 |
인터페이스 익명 구현 객체/ 다중 인터페이스/인터페이스 사용 (0) | 2020.09.08 |
인터페이스 / 선언/ 구현 (0) | 2020.09.07 |