如何在 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