在用Java接口实现方法时,我们可以从(公共)更改访问说明符吗?
Java中的接口是方法原型的规范。每当您需要指导程序员或订立合同以指定应如何使用类型的方法和字段时,都可以定义接口。
要创建此类型的对象,您需要实现此接口,为该接口的所有抽象方法提供主体,并获取实现类的对象。
接口的所有方法都是公共的和抽象的,我们将使用interface关键字定义一个接口,如下所示-
interface MyInterface{ public void display(); public void setName(String name); public void setAge(int age); }
实现接口方法
在实现/重写方法时,子类/实现类中的方法不得具有比父类中的方法更高的访问限制。如果尝试这样做,则会引发编译时异常。
由于public是最高的可见性或最低的访问限制,并且默认情况下接口的方法是公共的,因此您无法更改修饰符,这样做意味着增加访问限制,这是不允许的,并会生成编译时异常。
示例
在下面的示例中,我们通过删除访问说明符“public”从接口继承方法。
interface MyInterface{ public static int num = 100; public void display(); } public class InterfaceExample implements MyInterface{ public static int num = 10000; void display() { System.out.println("这是显示方法的实现"); } public void show() { System.out.println("这是显示方法的实现"); } public static void main(String args[]) { MyInterface.num = 200; } }
输出结果
编译时错误-
在编译时,以上程序会产生以下编译时错误。
InterfaceExample.java:7: error: display() in InterfaceExample cannot implement display() in MyInterface void display() { ^ attempting to assign weaker access privileges; was public InterfaceExample.java:14: error: cannot assign a value to final variable num MyInterface.num = 200; ^ 2 errors