추상 클래스로 선언된 클래스가 가지고 있는 모든 메서드들이 추상메서드 일 때, abstract가 아닌 interface(인터페이스)로 선언한다.
인터페이스는 메서드들이 완전한 기능을 갖고있지 않은 껍데기뿐이라 new로 멤버변수선언이 불가능하다. 따라서 인터페이스 안에 변수는 자바에서 컴파일 될때, public static final이 붙어 선언된다.
public interface Messenger{
public static final int MIN_SIZE = 1;
public static final int MAX_SIZE = 100000;
}
추상 메서드 이므로 컴파일 될 때, 앞에 abstract가 붙고 메서드 바디는 생략한다.
public interface Messenger{
public abstract String getMessage();
public abstract void setMessage(String message);
}
자바 8부터 지원이 된 default 메서드는 인터페이스를 상속 받는 모든 클래스에서 공통으로 갖는 기능을 구현한다. 그러므로 default 메서드는 메서드 바디를 가지고 있다.
public interface Messenger{
public default void setSendMsg(boolean check){
if(check){
System.out.println("메세지 전송 완료");
}else{
System.out.println("메세지 전송 실패");
}
}
}
자바 8부터 지원이 된 static 메서드는 static 이므로 객체 생성없이 사용이 가능하다. static 메서드 또한 메서드 바디를 갖는다.
public interface Messenger{
public static void getConnect() {
System.out.println("연결합니다.");
}
}
인터페이스를 상속 받을 때는 부모 클래스를 상속받을 때 사용하는
extends <부모클래스이름> 가 아닌
implements <인터페이스이름>으로 사용한다.또한 여러 인터페이스를 상속 받을 때는
implements <인터페이스1>, <인터페이스2> 으로 사용한다.인터페이스와 부모 클래스를 동시에 상속받을 때는
extends <부모클래스> implements <인터페이스> 로 사용한다.
public class quickMessenger implements Messenger{
//내용 생략
}
public class quickMessenger implements Messenger, OtherMessenger{
//내용 생략
}
public class quickMessenger extends QuickWay implements Messenger{
//내용 생략
}