如何在 Java 中隐藏类中不支持的接口方法?

java 8object oriented programmingprogramming更新于 2025/4/15 9:22:17

实际上你无法做到。一旦你实现了一个接口,就必须实现它的所有方法,或者将类设置为抽象类。除非是默认方法,否则无法跳过接口中的方法。但是,如果你尝试跳过接口方法的实现,则会产生编译时错误。

示例

interface MyInterface{
   public static int num = 100;
   public void sample();
   public void getDetails();
   public void setNumber(int num);
   public void setString(String data);
}
public class InterfaceExample implements MyInterface{
   public static int num = 10000;
   public void sample() {
      System.out.println("This is the implementation of the sample method");
   }
   public static void main(String args[]) {
      InterfaceExample obj = new InterfaceExample();
      obj.sample();
   }
}

输出

编译时错误

InterfaceExample.java:8: error: InterfaceExample is not abstract and does not override abstract method setString(String) in MyInterface
public class InterfaceExample implements MyInterface{
      ^
1 error

但是,您可以实现这些不需要的/不受支持的方法并从中抛出异常,例如 UnsupportedOperationException 或 IllegalStateException。

示例

interface MyInterface{
   public void sample();
   public void getDetails();
   public void setNumber(int num);
   public void setString(String data);
}
public class InterfaceExample implements MyInterface{
   public void getDetails() {
      try {
         throw new UnsupportedOperationException();
      }
      catch(UnsupportedOperationException ex) {
         System.out.println("Method not supported");
      }
   }
   public void setNumber(int num) {
      try {
         throw new UnsupportedOperationException();
      }
      catch(UnsupportedOperationException ex) {
         System.out.println("Method not supported");
      }
   }
   public void setString(String data) {
      try {
         throw new UnsupportedOperationException();
      }
      catch(UnsupportedOperationException ex) {
         System.out.println("Method not supported");
      }
   }
   public void sample() {
      System.out.println("This is the implementation of the sample method");
   }
   public static void main(String args[]) {
      InterfaceExample obj = new InterfaceExample();
      obj.sample();
      obj.getDetails();
      obj.setNumber(21);
      obj.setString("data");
   }
}

输出

This is the implementation of the sample method
Method not supported
Method not supported
Method not supported

相关文章