Item 18. 추상 클래스 대신 인터페이스를 사용하라.

public interface Songwriter{ Song compose(boolean hit); }

위와 같이 가수(singer), 작곡가(songwriter)를 인터페이스로 표현했을 때,
작곡도 하면서 가수 활동도 하는 사람을 표현할때 아래와 같이 표현할 수 있다.
```java
public interface SingerSongwriter extends Singer, Songwriter{
	AudoiClilp strum();
	void actSensitive();
}

인터페이스를 활용한 확장은 위와 같이 매우 유연한 설계 방식을 가질수 있다.

규칙 18. 추상 클래스 대신 인터페이스를 사용하라. (127.p ~ 123.p)를 다시 한번 꼭 읽어 볼것!!!

새로운 인터페이스를 내놓을 때는, 인터페이스를 확정하기 전에 최대한 많은 프로그래머가 인터페이스를 다양한 방법으로 구현해 보도록 해야 한다. 그렇면 수정할 기회가 있을 때 결함을 발견 할 수 있다. public 인터페이스는 극도로 주의해서 설계해야 하며, 실제로 여러 구현을 만들어 보면서 광범위하게 테스틀 해야 한다.