예전에 학교에서 프로젝트를 할 때만 해도 인터페이스를 뭔가 진행 과정(?)때문에 사용을 했었던 것 같습니다.
확실히 개념을 짚고 넘어갔어야 하는 부분이었는데 말이죠. 그래서 최대한 이해하기 쉽게 정리를 해봤습니다.
인터페이스(Interface)
인터페이스는 메소드만 선언되어 있고 실제 구현은 되어있지 않다.
우리는 인터페이스를 상속받은 클래스에서 (인터페이스에서)선언된 메소드를 가져다 입맛에 맞게 쓸 수 있다.
이는 팀 단위의 프로젝트를 하게 되면 효율적으로 사용할 수 있는 장점이 있다.
또 자바에서는 다중 상속을 허용하지 않는데 인터페이스는 인터페이스간의 다중 상속이 가능하다.
인터페이스의 메소드는 기능적인 구현이 아닌 선언만 되어있는 추상메소드이기 때문이다.
아래 샘플 코드를 보며 알아보자.
PayInter.java
|
package biz.test;
//인터페이스 선언
public interface PayInter {
//메소드 선언
//최저임금
public int minimumWages();
//주급 계산
public void weekWork(int i);
}
|
cs |
NameInter.java
|
package biz.test;
//인터페이스 선언
public interface NameInter {
//사람 이름
public void personName();
}
|
cs |
먼저 두 개의 인터페이스를 선언했다. 메소드의 의미는 다음과 같다.
PayInter |
NameInter |
minimumWages() |
최저임금을 알려준다 |
personName() |
사람 이름을 알려준다 |
weekWork(int i) |
주급을 계산한다 |
그리고 두 개의 인터페이스를 상속받는다.
인터페이스에서 선언된 메소드는 재정의 후 인스턴스화 되어 사용된다.
2018년과 2019년도의 최저임금과 일한 시간, 누가 했는지의 결과이다.
Pay2018.java
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
|
package biz.test;
public class Pay2018 implements PayInter, NameInter{
public int minimumWages(){
int i = 7530;
return i;
}
public void weekWork(int pay){
int weekPay = pay * 40;
System.out.println("작업시간 * 최저임금 = " + weekPay + "원");
}
public void personName(){
String name = "김요한";
System.out.println("이름 : " + name);
}
public static void main(String args[]) {
PayInter pay = new Pay2018();
NameInter name = new Pay2018();
int i = pay.minimumWages();
name.personName();
System.out.println("최저 임금 : " + i + "원");
pay.weekWork(i);
}
}
|
cs |
Pay2019.java
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
|
package biz.test;
public class Pay2019 implements PayInter, NameInter{
public int minimumWages(){
int i = 8350;
return i;
}
public void weekWork(int pay){
int weekPay = pay * 35;
System.out.println("작업시간 * 최저임금 = " + weekPay + "원");
}
public void personName(){
String name = "박무열";
System.out.println("이름 : " + name);
}
public static void main(String args[]) {
PayInter pay = new Pay2019();
NameInter name = new Pay2019();
int i = pay.minimumWages();
name.personName();
System.out.println("최저 임금 : " + i + "원");
pay.weekWork(i);
}
}
|
cs |
+ 피드백은 언제나 환영입니다 :)