Java接口中允许的方法修饰符有哪些?


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

在Java 7中

在**Java 7**中,接口的方法只能使用`public`和`abstract`作为修饰符。

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

在接口的方法中使用任何其他修饰符都会导致编译时错误。

从Java 8开始

从**Java 8**开始,接口允许使用默认方法和静态方法。

  • **静态方法** - 静态方法使用`static`关键字声明,它将与类一起加载到内存中。可以使用类名访问静态方法,无需实例化。
  • 需要使用接口名称调用接口的静态方法。

示例

 在线演示

interface MyInterface{
   public void demo();
   public static void display() {
      System.out.println("This is a static method");
   }
}
public class InterfaceExample{
   public void demo() {
      System.out.println("This is the implementation of the demo method");
   }
   public static void main(String args[]) {
      InterfaceExample obj = new InterfaceExample();
      obj.demo();
      MyInterface.display();
   }
}

输出

This is the implementation of the demo method
This is a static method
  • **默认方法** - 默认方法是接口方法的默认实现,如果接口中有默认方法,则无需在已实现此接口的类中实现它。
  • 默认方法也称为防御者方法**或**虚拟扩展方法。可以使用`default`关键字定义默认方法,例如:
default void display() {
   System.out.println("This is a default method");
}

示例

 在线演示

interface sampleInterface{
   public void demo();
   default void display() {
      System.out.println("This is a default method");
   }
}
public class DefaultMethodExample implements sampleInterface{
   public void demo() {
      System.out.println("This is the implementation of the demo method");
   }
   public static void main(String args[]) {
      DefaultMethodExample obj = new DefaultMethodExample();
      obj.demo();
      obj.display();
   }
}

输出

This is the implementation of the demo method
This is a default method

从Java 9开始

从Java 9开始,接口允许使用私有方法和私有静态方法。

示例

interface MyInterface {
   public abstract void demo();
   public default void defaultMethod() {
      privateMethod();
      staticPrivateMethod();
      System.out.println("This is a default method of the interface");
   }

   public static void staticMethod() {
      staticPrivateMethod();
      System.out.println("This is a static method of the interface");
   }

   private void privateMethod(){
      System.out.println("This is a private method of the interface");
   }

   private static void staticPrivateMethod(){
      System.out.println("This is a static private method of the interface");
   }
}

public class InterfaceMethodsExample implements MyInterface {
   public void demo() {
      System.out.println("Implementation of the demo method");
   }

   public static void main(String[] args){
      InterfaceMethodsExample obj = new InterfaceMethodsExample();
      obj.defaultMethod();
      obj.demo();
      MyInterface.staticMethod();
   }
}

输出

This is a private method of the interface
This is a static private method of the interface
This is a default method of the interface
Implementation of the demo method
This is a static private method of the interface
This is a static method of the interface

更新于:2019年7月30日

3K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告