반응형
인터페이스 (Interface)
- 추상 메소드와 상수로만 구성된 특수 형태의 클래스
- 상수란 값을 한번 설정하면 다시 바꿀 수 없는 변수
- 인터페이스 선언시 class가 아닌 interface로 정의
- 클래스의 상속은 extends를 쓰지만 인터페이스의 상속은 implements를 사용
- 다중 상속이 가능, 일반 클래스의 단일 상속의 단점을 보완
- 모듈들을 연결하는 기능
예) 인터페이스를 이용해 추상 메소드를 재정의하고 Hello 문구 출력하기
package Interface;
// 인터페이스
public interface MyInterface {
String msg = "Hello"; // 상수
void print(); // 추상 메소드
}
// 추상 메소드 정의 및 메인 클래스
public class MyMain implements MyInterface{
@Override // 추상 메소드 정의
public void print() {
System.out.println(msg);
}
public static void main(String[] args) {
MyMain c = new MyMain();
c.print(); // Hello
}
}
- 상수는 값 설정 이후 값을 변경 할 수 없음, 값 설정시 에러 출력
인터페이스의 사용 이유
- 프로그램이 실행되는 환경은 매우 다양
- 개발 할 때 실행 될 환경을 고려하지만 모든 환경을 만족시킬 수 없음
- 서로 다른 환경에서의 기능 구현은 프로그램의 유지 보수성 저하
- 그렇기 때문에 부품 교체하듯 코드의 일부를 교체하는 것이 효과적
- 내부 구현은 다르지만 인터페이스로 사용 방법을 동일하게 제공하면 환경 변화에 따른 수정이 훨씬 쉬움
- 주로 API에서 많이 사용
예) DB프로그램은 오라클,MS-SQL,MySQL 등 다양하며 서로 처리 방법이 다르다.
DB프로그램이 바뀔 때마다 코드를 수정해야하지만 인터페이스로 설정해두면 수정을 쉽게 할 수 있다.
반응형