Interface의 의미

Interface는 사전적인 의미로 상호간의 소통을 위한 매개체라는 의미로 사람이 기계를 조작하기 위해 사용되는 각종 버튼들을 인터페이스 개념의 대표적인 예로 쓰인다. 이러한 개념을 객체지향에 적용시킨 것이 자바의 interface이다. 즉, 클래스를(사람이) 구현하기 위해(기계를 조작하기 위한) 사용되는 각종 메소드(각종 버튼)를 만들어 둔 매개체가 interface라는 것이다.

Interface 선언

/*     인터페이스     */
public interface NewInterface{
	/*     
	인터페이스에서 선언된 필드는 무조건
	public static final이 선언된 필드즉 상수
	취급을 하기 때문에 항상 필드 선언과 동시에
	초기화를 해줘야 한다.     
	*/
	int a = 1;
	public char = 'A';
	final double = 1.2;
	static float = 1.8f;
	//......
	
	/*
	인터페이스에 선언된 추상 메소드는
	자동으로 public abstract가 선언된 상태로
	인식을 한다.
	*/
	public void method1();
	int method2();
	abstract String method3();
	//......

	/* Java 8부터 인터페이스에서
		 디폴트 메소드 한정으로 구현부가 존재하는
		 메소드를 사용할 수 있다.*/
//	default void method(){
//		////// 메소드 구현부 //////
//	}
	
}

<aside> 💡 Java 8 부터 구현된 메소드 사용 가능 java 8 부터 추가된 기능으로 기존에는 추상 메소드만 선언 가능했던 것이 default 접근 지정자 한정으로 구현부가 존재하는 메소드를 사용할 수 있다. 이때 주의해야 할 점은 일반 클래스에서는 접근 지정자가 없는 메소드가 디폴트 메소드였지만 인터페이스에서는 default 접근 지정자를 선언 해줘야 한다. default 선언이 없으면 추상 메소드로 간주하여 컴파일 에러가 발생한다.

</aside>

Interface 사용 방법

public interface NewInterface{
		int method1();
		public void method2();
}

public class NewClass implements NewInterface{
		@Override
		public int method1(){
				return 0;
		}
		@Override
		public void method2(){}
}

Interface 상속

interface A{}
interface B extends A{} // 인터페이스 단일 상속
interface C{}
// 인터페이스 다중상속
interface D extends B,C{}
interface E extends A,B,C,D{}