1. 인터페이스
- 인터페이스는 클래스가 아니지만, 일종의 추상 클래스라고 생각할 수 있다.
- 추상 클래스보다 추상화 정도가 높아서 추상 메소드 이외의 일반 메소드나 변수를 구성원으로 가질 수 없다.
오직 추상 메소드와 상수(constant)만 멤버로 가질 수 있으며, 그 외의 요소는 허용하지 않는다. - 클래스는 하나의 상속만 가능하지만, 인터페이스는 다중 상속(다중 구현)이 가능하다.
- 정의할 때 class가 아닌 interface를 써서 정의한다.
- 클래스의 상속은 extends를 쓰지만 인터페이스의 구현은 implements를 사용한다.
- 추상클래스와 마찬가지로, 하위 클래스는 모든 추상 메소드를 구현해야 객체로 생성할 수 있다.
- 제약 사항
- 모든 멤버 변수는 public static final 이어야 하며, 생략 가능.
- 모든 메소드는 public abstract 이어야 하며, 생략 가능.
public interface Card {
public static final int SPADE = 4;
final int DIAMOND = 3;
static int HEART = 2;
int CLOVER = 1;
// 위의 상수는 모두 public static final이며, 생략된 형태이다.
// 자동으로 상수처리 되기 때문에 값을 바꿔보려고 시도해도 바꿀수 없다.
public String getCardNumber();
public void print();
}
public interface Player {
public void play(String name);
public void end();
}
// 인터페이스는 다중 implements가 가능
public class MyCard implements Card, Player {
public String cardNumber;
@Override
public String getCardNumber() {
return cardNumber;
}
@Override
public void print() {
System.out.println("내 카드 숫자는 : " + cardNumber);
}
@Override
public void play(String name) {
코드 구현
}
@Override
public void end() {
코드 구현
}
2. 인터페이스의 사용 이유
소프트웨어가 실행되는 환경은 매우 다양하다.
소프트웨어를 개발할 때 실행될 환경을 고려하지만 모든 환경을 만족시킬 수는 없다.
한번에 모든 환경에서 실행될 수 있는 소프트웨어를 개발하는 것이 아니라, 부품 교체하듯이 그 환경에 맞는 코드로 일부를 교체하는 것이 효과적이다.
인터페이스는 소프트웨어를 부품처럼 개발하여 각 부품을 연결하는 이음면이다.
이음면은 표준화되어 이 표준에 맞게 구현된 코드는 무엇이나 연결할 수 있다.
그래서 인터페이스는 주로 API로 사용된다.
3. 인터페이스의 장점
- 대규모 프로젝트 개발 시 일관되고 정형화된 개발을 위한 표준화가 가능하다.
- 클래스의 작성과 인터페이스의 구현을 동시에 진행할 수 있으므로, 개발 시간을 단축할 수 있다.
- 클래스와 클래스 간의 관계를 인터페이스로 연결하면 클래스마다 독립적인 프로그래밍이 가능하다.
'Java' 카테고리의 다른 글
Java - 문자열, 정수, 실수 등을 생성하는 방법 (0) | 2023.01.25 |
---|---|
Java - final 키워드 (0) | 2023.01.20 |
Java - 추상 클래스 (Abstract Class) (0) | 2023.01.20 |
Java - 변수의 종류와 메모리 구조 (0) | 2023.01.20 |
Java - 클래스 상속(Inheritance), 오버라이딩(Overriding) (0) | 2023.01.19 |