Java의 인터페이스는 메서드 프로토타입의 사양입니다. 프로그래머를 안내해야 할 때마다 또는 유형의 메소드와 필드가 어떻게 되어야 하는지를 지정하는 계약을 맺을 때마다 인터페이스를 정의할 수 있습니다.
이 유형의 개체를 만들려면 이 인터페이스를 구현하고 인터페이스의 모든 추상 메서드에 대한 본문을 제공하고 구현 클래스의 개체를 가져와야 합니다.
예
interface Sample { void demoMethod1(); void demoMethod2(); void demoMethod3(); } public class InterfaceExample implements Sample { public void demoMethod1() { System.out.println("This is demo method-1"); } public void demoMethod2() { System.out.println("This is demo method-2"); } public void demoMethod3() { System.out.println("This is demo method-3"); } public static void main(String args[]) { InterfaceExample obj = new InterfaceExample(); obj.demoMethod1(); obj.demoMethod1(); obj.demoMethod3(); } }
출력
This is demo method-1 This is demo method-2 This is demo method-3
인터페이스를 구현하는 동안 인터페이스의 모든 추상 메서드를 재정의해야 하지만 추상 메서드 재정의를 건너뛰면 컴파일 시간 오류가 생성됩니다.
예
interface Sample { void demoMethod1(); void demoMethod2(); void demoMethod3(); } public class InterfaceExample implements Sample { public void demoMethod1() { System.out.println("This is demo method-1"); } public void demoMethod2() { System.out.println("This is demo method-2"); } public static void main(String args[]) { InterfaceExample obj = new InterfaceExample(); obj.demoMethod1(); obj.demoMethod2(); } }
출력
InterfaceExample.java:6: error: InterfaceExample is not abstract and does not override abstract method demoMethod3() in Sample public class InterfaceExample implements Sample{ ^ 1 error
그러나 여전히 하나의 추상 메서드만 재정의하려는 경우 -
나머지 메소드를 구현하지 않은 상태로 둘 수 있습니다. -
로예
interface Sample { void demoMethod1(); void demoMethod2(); void demoMethod3(); } public class InterfaceExample implements Sample { public void demoMethod1() { System.out.println("This is demo method-1"); } public void demoMethod2() { } public void demoMethod3() { } public static void main(String args[]) { InterfaceExample obj = new InterfaceExample(); obj.demoMethod1(); obj.demoMethod2(); obj.demoMethod3(); } }
출력
This is demo method-1
int는 인터페이스의 기본 메소드를 구현하는 데 필수가 아니므로 나머지 메소드를 선언할 수 있습니다. default -
로예
interface Sample { void demoMethod1(); default void demoMethod2() { System.out.println("Default demo method 2"); } default void demoMethod3() { System.out.println("Default demo method 3"); } } public class InterfaceExample implements Sample { public void demoMethod1() { System.out.println("This is demo method-1"); } public static void main(String args[]) { InterfaceExample obj = new InterfaceExample(); obj.demoMethod1(); obj.demoMethod2(); obj.demoMethod3(); } }
출력
This is demo method-1 Default demo method 2 Default demo method 3