인터페이스 (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에서 많이 사용
'Java' 카테고리의 다른 글
| 문자열을 숫자로 변환, 숫자를 문자열로 변환하는 방법 (0) | 2023.01.25 |
|---|---|
| 정수 및 실수를 클래스로 생성하는 방법 (0) | 2023.01.25 |
| 추상 클래스 (Abstract Class) (0) | 2023.01.20 |
| 접근제어자(Access Modifier) (0) | 2023.01.19 |
| super 키워드 (0) | 2023.01.19 |