Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java 인터페이스를 구현하는 동안 하나의 메서드만 재정의할 수 있습니까?

<시간/>

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