인터페이스 (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(10, 20, 30); System.out.println(c.sum() + c.avg()); } } | cs |
인터페이스의 장점
인터페이스가 작성되면 메서드의 내용에 관계없이 선언부만 알면 되기 때문에, 이를 사용해 프로그램을 작성하는 것이 가능하다.
즉, 인터페이스를 구현할 클래스가 작성될 때까지 기다리지 않고도 양쪽에서 동시에 개발을 진행할 수 있어 개발시간을 단축할 수 있다.
기본 틀을 인터페이스로 작성함으로써 보다 일관된 프로그램 개발이 가능하다.
서로 아무런 관계가 없는 클래스들에게 하나의 인터페이스를 공통적으로 구현함으로서 관계를 맺어 줄 수 있다.
클래스간 관계를 인터페이스를 이용해 간접적인 관계로 변경하면,
한 클래스의 변경이 연관된 다른 클래스에 영향을 미치지 않는 독립적인 프로그래밍이 가능하다.
참고 출처
- 자바의 정석 책
- https://opentutorials.org/course/1223/6063
'Java' 카테고리의 다른 글
추상 클래스 (Abstract Class) 와 추상화 (Abstraction) (0) | 2018.11.27 |
---|---|
다형성 (Polymorphism) (0) | 2018.11.27 |
접근 제어자 (Access Modifier)와 캡슐화(Encapsulation) (0) | 2018.11.27 |
JVM (Java Virtual Machine) 개념과 JVM 메모리 구조 (0) | 2018.11.27 |
생성자 (Constructor) (0) | 2018.11.27 |