인터페이스는 규약이다.
ex) 자동차의 특정 부품에 대한 규약. 부품 업체는 이걸 참고하여 생산/제공
//TV는 인터페이스, LedTV는 TV를 구현한 클래스
TV tv = new LedTV(); // "다형성"
tv.turnOn(); // 이런 경우에는 인터페이스가 가지고 있는 메소드만 사용할 수 있다.
tv = (LedTV)tv; // "클래스의 형변환"
tv.turnOnFast();// 인터페이스를 구현해 기능이 확장된 클래스의 기능을 사용할 수 있다.
Tv tv = new LedTV(); // SmartTV 클래스를 새로 만들어 적용할 때, 이 부분만 수정하면 된다.
// Tv tv = new SmartTV();
tv.turnOn();
tv.changeChannel(8);
tv.changeVolume(39);
tv.turnOff();
interface TV {
void turnOn();
void turnOff();
void changeVolume(int volume);
void changeChannel(int channel);
}
public interface Calculator {
public int plus(int i, int j);
public int multiple(int i, int j);
default int exec(int i, int j){ // default로 선언하여 메소드를 구현할 수 있습니다.
return i + j;
}
}
class SmartPhone implements Phone, Camera, Computer {
}
public interface Meter{
public int BASE_FARE = 3000; // 기본요금(인터페이스에 정의한 변수는 상수라서 변경할 수 없습니다.)
public abstract void start();
public abstract int stop(int distance);
}