是的你可以。
如果您实现接口并从类中为其方法提供主体。您可以使用接口的引用变量来保存该类的对象,即将对象引用转换为接口引用。
但是,使用此方法只能访问接口的方法,如果尝试访问该类的方法,则会生成编译时错误。
在下面的Java示例中,我们有一个名为MyInterface的接口和一个抽象方法display()
。
我们有一个名称为InterfaceExample的类,带有一个方法(show())。除此之外,我们正在实现接口的display()方法。
在main方法中,我们将类的对象分配给接口的引用变量,并尝试同时调用这两种方法。
interface MyInterface{ public static int num = 100; public void display(); } public class InterfaceExample implements MyInterface{ public void display() { System.out.println("This is the implementation of the display method"); } public void show() { System.out.println("This is the implementation of the show method"); } public static void main(String args[]) { MyInterface obj = new InterfaceExample(); obj.display(); obj.show(); } }
在编译时,上述程序会产生以下编译时错误-
InterfaceExample.java:16: error: cannot find symbol obj.show(); ^ symbol: method show()location: variable obj of type MyInterface 1 error
为了使该程序正常工作,您需要删除将类的方法调用为的行-
interface MyInterface{ public static int num = 100; public void display(); } public class InterfaceExample implements MyInterface{ public void display() { System.out.println("This is the implementation of the display method"); } public void show() { System.out.println("This is the implementation of the show method"); } public static void main(String args[]) { MyInterface obj = new InterfaceExample(); obj.display(); //obj.show(); } }
现在,程序被编译并成功执行。
输出结果
This is the implementation of the display method
因此,您需要将对象引用转换为接口引用。每当您只需要调用接口的方法时。