package realization;
public interface Printable {
//추상메소드(Abstract Method) : 자식클래스에서 반드시 오버라이드 선언
void print();
//JDK8 이상에서는 인터페이스에 명령을 작성할 수 있는 기능의 기본메소드 선언 가능
//기본메소드(Default Method) : 인터페이스를 상속받아 자식클래스에 오버라이스 선언하지
//않아도 되는 메소드 - 오버라이드 선언하지 않은 경우 기본메소드 호출
//형식)default 반환명 메소드명(자료형 매개변수명,...) { 명령;... }
default void scan() {
System.out.println("[에러]스캔 기능을 제공하지 않습니다.");
}
}
package realization;
public class PrintSingle implements Printable {
@Override
public void print() {
System.out.println("[프린트]문서를 출력합니다.");
}
}
package realization;
public class PrintMulti implements Printable {
@Override
public void print() {
System.out.println("[복합기]문서를 출력합니다.");
}
@Override
public void scan() {
System.out.println("[복합기]문서를 스캔합니다.");
}
}
package realization;
public class PrintableApp {
public static void main(String[] args) {
//기본메소드를 사용하기 위해서는 참조변수를 인터페이스로 선언
Printable printOne=new PrintSingle();
printOne.print();
printOne.scan();//부모 인터페이스의 기본메소드 호출
System.out.println("======================================================");
Printable printTwo=new PrintMulti();
printTwo.print();
printTwo.scan();
System.out.println("======================================================");
}
}