在Java中实现接口方法时,能否更改访问修饰符(从public)?


Java 中的接口是方法原型的规范。每当您需要指导程序员或制定一个合同,指定类型的方法和字段应该如何时,您可以定义一个接口。

要创建此类型的对象,您需要实现此接口,为接口的所有抽象方法提供主体,并获取实现类的对象。

接口的所有方法都是公共的和抽象的,我们将使用 interface 关键字定义接口,如下所示:

interface MyInterface{
   public void display();
   public void setName(String name);
   public void setAge(int age);
}

实现接口的方法

在实现/覆盖方法时,子类/实现类中的方法的访问限制不能高于超类中的方法。如果您尝试这样做,则会引发编译时异常。

由于 public 是最高的可见性或最低的访问限制,并且接口的方法默认是 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("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.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

更新于: 2019年9月10日

566 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告