프로그래밍 언어/JAVA

자바 인터페이스(interface)

원원 2017. 12. 5. 15:45

안녕하세요. 오늘은 자바 인터페이스에 대해 알아보겠습니다.

인터페이스를 사용하는 이유는 공동작업을 하기 위해서입니다.

예를들어 LED모듈을 아트메가나 아두이노에서 동작하게 하려면 코드가 다릅니다. 그래서 LED모듈 인터페이스를 만들어 놓고 각각 코드를 구현하면 됩니다.



인터페이스 사용


인터페이스의 기본적인 형식은 클래스와 같은데, 함수에는 몸체가 없습니다. 또한 인터페이스를 상속할때는 implements를 사용합니다.


1
2
3
4
interface Led {
    public void led_ON();
    public void led_OFF();
}
cs

Led 인터페이스를 만들었습니다. 이때 함수들을 추상메소드라고 합니다.

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
class atmega implements Led {
    @Override
    public void led_ON() {
        // TODO Auto-generated method stub
        System.out.println("PORTA=0xff;");
    }
 
    @Override
    public void led_OFF() {
        // TODO Auto-generated method stub
        System.out.println("PORTA=0x00;");
    }
}
 
class arduino implements Led {
    @Override
    public void led_ON() {
        // TODO Auto-generated method stub
        System.out.println("digitalWrite(1,HIGH);");
    }
 
    @Override
    public void led_OFF() {
        // TODO Auto-generated method stub
        System.out.println("digitalWrite(1,LOW);");
    }
}
cs
atmega클래스와 arduino클래스를 만들어서 led를 제어하는 코드를 입력했습니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
class user {
    public static void main(String args[]) {
        Led _atmega = new atmega();
        Led _arduino = new arduino();
 
        System.out.println(" ATMEGA");
        _atmega.led_ON();
        _atmega.led_OFF();
 
        System.out.println("\n ARDUINO");
        _arduino.led_ON();
        _arduino.led_OFF();
    }
}
cs
사용자가 Led를 아트메가와 아두이노로 사용했습니다.

결과값
 ATMEGA
PORTA=0xff;
PORTA=0x00;

 ARDUINO
digitalWrite(1,HIGH);
digitalWrite(1,LOW);