객체지향의 마지막 개념인 인터페이스를 다시 공부했다.
인터페이스는 사용 설명서이자 접점이며 상속보다도 다형성 구현에 많이 사용된다.
Chapter 08 인터페이스
두 객체를 연결하는 역할을 하는 접점이자 사용 설명서라고 할 수 있다.
인터 페이스는 추상 메서드의 집합이며 껍데기 설계도라고 볼 수 있다.
interface 인터페이스이름 {
public static final 타입 상수이름 = 값;
public abstract 메서드명(매개변수명);
}
인터페이스는 다음과 같이 구현할 수 있으며 모든 추상 메서드를 구현해야 한다.
한 개라도 구현하지 않을 경우 abstract 키워드를 작성한다.
class Fighter implements Fightable {
public void move(int x, int y) { ... }
public void attack(Unit u) { ... }
}
인터페이스는 선언과 구현을 분리시켜 유연하며 변경에 유리하다.
또한 표준화가 가능하고 서로 관계가 없는 클래스들의 관계를 맺어줄 수 있다.
class A {
public void methodA(I i) {
i.methodB();
}
}
interface I { void methodB(); }
class B implements I {
public void methodB() {
System.out.println("methodB()");
}
}
class C implements I {
public void methodB() {
System.out.println("methodB() in C");
}
}
class InterfaceTest {
public static void main(String[] args) {
A a = new A();
a.methodA(new B()); // a.methodA(new A());
}
}