인터페이스 (Interface)

일종의 추상클래스로, 구현된 것이 아무 것도 없고 밑그림만 그려져 있는 기본 설계도라 할 수 있다.

추상클래스보다 추상화 정도가 높아 추상클래스와 달리 몸통을 갖춘 일반 메서드나 멤버변수를 가질 수 없다.

오직 추상메서드와 상수만을 가질 수 있다.

인터페이스는 인터페이스로만 상속받을 수 있으며, 여러 인터페이스로부터 상속을 받을 수 있다.


인터페이스 작성 및 구현 예

1
2
3
4
5
6
7
8
interface InterfaceName {
     [public static final] int constantName = 1;
     [public abstract] void interfaceMethod();
}
 
class A implements InterfaceName {
    public void interfaceMethod() { ... }
cs


인터페이스 사용 예제

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
// 계산기 인터페이스
public interface Calculatable {
    public void setOprands (int first, int second, int third);
    public int sum();
    public int avg();
}
 
// 인터페이스를 구현한 클래스
class Calculator implements Calculatable {
     int first, second, third;
    
    public void setOprands (int first, int second, int third) {
         this.first = first;
         this.second = second;
         this.third = third;
    }
    
    public int sum() { 
         return this.first + this.second + this.third;
    }
 
    public int avg() { 
        return (this.first + this.second + this.third) / 3;
    }
 
// 구현된 클래스를 사용한 어플리케이션
public class CalculatorConsumer {
    public static void main(String[] args) {
        Calculator c = new Calculator();
        c.setOprands(102030);
        System.out.println(c.sum() + c.avg());
    }
}
cs



인터페이스의 장점

인터페이스가 작성되면 메서드의 내용에 관계없이 선언부만 알면 되기 때문에, 이를 사용해 프로그램을 작성하는 것이 가능하다.

즉, 인터페이스를 구현할 클래스가 작성될 때까지 기다리지 않고도 양쪽에서 동시에 개발을 진행할 수 있어 개발시간을 단축할 수 있다.


기본 틀을 인터페이스로 작성함으로써 보다 일관된 프로그램 개발이 가능하다.


서로 아무런 관계가 없는 클래스들에게 하나의 인터페이스를 공통적으로 구현함으로서 관계를 맺어 줄 수 있다.


클래스간 관계를 인터페이스를 이용해 간접적인 관계로 변경하면, 

한 클래스의 변경이 연관된 다른 클래스에 영향을 미치지 않는 독립적인 프로그래밍이 가능하다.





참고 출처

- 자바의 정석 책

https://opentutorials.org/course/1223/6063


+ Recent posts