Java - Interface (다중 상속)

반응형

인터페이스 (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프로그램이 바뀔 때마다 코드를 수정해야하지만 인터페이스로 설정해두면 수정을 쉽게 할 수 있다.

반응형