interface 변수 {⋯}
(public) interface Light {
(public static final) int MAX_BRIGHTNESS = 20; //상수 필드 선언
(abstract public) void On(); //추상 메소드 선언
(abstract public) void Off(); //추상 메소드 선언
}
interface 상속받는인터페이스변수 extends 인터페이스변수1, 인터페이스변수2 {⋯}
(public) class 구현클래스변수 implements 인터페이스변수 {⋯}
(public) class 구현클래스변수 implements 인터페이스변수A, 인터페이스변수B {⋯}
public class Computer implements TV, Light {
⋯
}
public class Example {
//Field
Computer computer_interface = new Light(); //필드로 선언
//Constructor
Example(Computer computer_interface) { //생성자의 매개값으로 구현 객체 대입
this.computer_interface = computer_interface;
}
//Method
void methodA() {
//local variable
Computer computer_interface = new TV(); //로컬 변수의 타입으로 선언
}
void methodB(Computer computer_interface) {⋯}; //생성자의 매개값으로 구현 객체 대입
}
※ Computer computer_interface에는 main에서 실행할 때 인터페이스였던,
new TV()나 new Light()를 대입할 수 있다.
인터페이스변수 변수 = new 구현객체(매개변수, ⋯)
Reference
명품 자바 에센셜(2014, 황기태)