클래스보다 인터페이스가 좋은이유
- 클래스로 상속을 이용하면 불필요한 함수들도 같이 상속받게됨
- 다중상속을 활용, 필요기능만 삽입가능
- 불필요한 더미생성 안해도됨
- 업무 효율성을 기할수있음
interface Printable { void print(String doc); } //인터페이스간 상속도 익스텐드다 interface ColorPrintable extends Printable { void printCMYK(String doc); }
인터페이스간의 상속을 이용해 기존 것을 고칠필요없이 드라이버의 표준도 갱신 시킬수있다.
interface Printable 를 상속한 클래스를 수정할필요가 없어지는것이다
그러나...함수를 추가할때마다 모든 인터페이스에
pYK(String doc); 문 을 추가해야할것이다.
새로운 인터페이스를 만들지 않고 기존에 default 를 추가한다
interface Printable { // MS가 정의하고 제공한 인터페이스 public void print(String doc); default void printCMYK(String doc){ System.out.println("푸린트"); } } class SPrinterDriver implements Printable { @Override public void print(String doc) { System.out.println("흑백 지원"); System.out.println(doc); } @Override public void printCMYK(String doc){ System.out.println("컬러 지원"); }
defauult 로 추가할 경우 메소드를 인터페이스에서 구현할수있다.
기존, interface 에 추가된 모든 내용을 구현해야하던 것과 달리
이것으로 상속받을지 안할지 선택할수 있게된다.