Computer >> Máy Tính >  >> Lập trình >> Java

Chúng ta có thể ghi đè chỉ một phương thức trong khi triển khai giao diện Java không?

Một giao diện trong Java là một đặc tả của các nguyên mẫu phương thức. Bất cứ khi nào bạn cần hướng dẫn người lập trình hoặc, lập một hợp đồng chỉ định cách các phương thức và trường của một loại phải là bạn có thể xác định một giao diện.

Để tạo một đối tượng kiểu này, bạn cần triển khai giao diện này, cung cấp nội dung cho tất cả các phương thức trừu tượng của giao diện và lấy đối tượng của lớp triển khai.

Ví dụ

Giao diện
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();
   }
}

Đầu ra

This is demo method-1
This is demo method-2
This is demo method-3

Trong khi triển khai một giao diện, bắt buộc phải ghi đè tất cả các phương thức trừu tượng của nó, nếu bạn bỏ qua việc ghi đè bất kỳ phương thức trừu tượng nào, thì lỗi thời gian biên dịch sẽ được tạo ra.

Ví dụ

Giao diện
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();
   }
}

Đầu ra

InterfaceExample.java:6: error: InterfaceExample is not abstract and does not override abstract method demoMethod3() in Sample
public class InterfaceExample implements Sample{
       ^
1 error

Tuy nhiên, nếu bạn chỉ muốn ghi đè một phương thức trừu tượng -

Bạn có thể để lại các phương pháp còn lại chưa được thực hiện như -

Ví dụ

Giao diện
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();
   }
}

Đầu ra

This is demo method-1

Vì int không bắt buộc phải triển khai các phương thức mặc định của giao diện, bạn có thể khai báo các phương thức còn lại default như -

Ví dụ

Giao diện
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();
   }
}

Đầu ra

This is demo method-1
Default demo method 2
Default demo method 3