Java

Interface (다중 상속)

yugyeong 2023. 1. 20. 15:09

인터페이스 (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
   }
}

 

 

2. 상수

상수는 static final 형태로 사용된다.

public static final int CLOVER = 1;
public static final int HEART = 2;
public static final int DIAMOND = 3;
public static final int SPADE = 4;
  • 상수는 디비 호스트, 디비 유저 이름 등등에 이용한다.
  • 상수는 메모리의 데이터 영역에 있다. 따라서 객체를 가지고 사용해도 되지만, 실제로는 객체 생성없이 사용이 가능한 것이 상수이다.
  • 정석 사용법은 객체 생성없이 클래스(인터페이스)의 이름.상수명 이다.

상수는 한번 설정한 이후 값 변경이 불가능하다.

 

3. 인터페이스의 사용 이유

  • 프로그램이 실행되는 환경은 매우 다양
  • 개발 할 때 실행 될 환경을 고려하지만 모든 환경을 만족시킬 수 없음
  • 서로 다른 환경에서의 기능 구현은 프로그램의 유지 보수성 저하
  • 그렇기 때문에 부품 교체하듯 코드의 일부를 교체하는 것이 효과적
  • 내부 구현은 다르지만 인터페이스로 사용 방법을 동일하게 제공하면 환경 변화에 따른 수정이 훨씬 쉬움
  • 주로 API에서 많이 사용