[인터페이스]
인터페이스는 자바에서 추상화를 제공하며, 다중 상속을 하기 위한 유일한 수단이다.
[인터페이스의 특징]
- 인터페이스 타입의 참조는 그 인터페이스를 구현한 모든 클래스를 가리킬 수 있다.
public interface Car {}
public class MyCar implements Car {}
public class DogCar implements Car {}
Car mCar = new MyCar();
Car DogCar = new DogCar();
- 인터페이스 내에서 선언된 모든 변수는 암묵적으로 public final 변수 또는 상수이다.
- 인터페이스를 상수를 선언하는 데 유용하게 사용할 수 있다.
- 전역 상수를 저장하기 위해 인터페이스를 이용하면, 구현 클래스에서는 클래스 이름을 참조하지 않고 상수에 직접 액세스 할 수 있다는 장점이 있다. (자바 5에서 static imports의 등장으로 이후에는 권장되지 않는다)
- 인터페이스의 모든 메서드는 public 또는 abstract이다.
- 인터페이스는 변수와 메소드의 선언을 위해 사용된다.
[인터페이스의 사용]
- 인터페이스는 타입을 선언할 때 가장 유용하게 사용될 수 있다.
- 현대, 기아, 벤츠, 아우디 등 다양한 차가 있다고 하면 Car()라는 인터페이스를 통해 현대, 기아, 벤츠, 아우디 차량의 조작을 할 수 있다.
- 추상 타입을 기준으로 동작하기 때문에 더 유연한 코드를 작성할 수 있다.
public class MyCar implements Car {
public static void main(String[] args) {
Car kia = new KIA();
Car Audi = new Audi();
}
}
- 팀 단위로 일을 할 때 유용하게 사용될 수 있다.
- 다수의 프로그래머가 각기 다른 모듈에 대해 작업할 때, 인터페이스를 만들어서 작업함으로써 서로에게 필요한 구현 클래스를 기다릴필요가 없다.