오직 상수와 추상 메서드만 존재하는 일종의 추상 클래스
추상화 정도가 높아서 밑그림만 있는 기본 설계도의 개념으로 이해할 수 있다
상수와 '추상' 메서드만 존재하는 일종의 '추상' 클래스
=> 이미 정의에서 추상화 개념을 내포하고 있음을 알 수 있다
인터페이스도 상속이 가능하다
인터페이스로부터만 상속받을 수 있으며, 클래스와는 달리 다중상속이 가능하다
한 가지 타입으로 여러 구현체를 사용할 수 있다
인터페이스를 사용하면 유지보수가 용이해진다
public interface Tv {
public void power();
public void channelUp();
public void channelDown();
}
public class SamsungTV implements Tv {
private boolean power;
private int channel;
public void power() {
power = !power;
}
public void channelUp() {
channel++;
}
public void channelDown() {
channel--;
}
}
public class LgTv implements Tv {
private boolean lgPower;
private int lgChannel;
public void power() {
lgPower = !lgPower;
}
public void channelUp() {
lgChannel++;
}
public void channelDown() {
lgChannel--;
}
public class Client {
public static void main(String[] args) {
Tv tv = new SamsungTv();
//Tv tv = new LgTv(); // 나머지 변경할 필요 없이 구현 부분만 변경해주면 된다!
tv.power();
tv.channelUp();
tv.channelDown();
}
}
복잡한 내부의 실제 구현(구체 클래스)과 인터페이스를 분리
외부에는 인터페이스 정보만을 공유하여 외부에서 알 필요가 없는 구현 부분을 감출 수 있다