Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误与异常

Java 多线程

Java 同步

Java 网络编程

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 其他

Java APIs 和框架

Java 类引用

Java 有用资源

Java - 私有接口方法



Java 9 中引入了私有和静态私有接口方法。作为私有方法,这种方法无法通过实现类或子接口访问。引入这些方法是为了允许封装,其中某些方法的实现将仅保留在接口中。它有助于减少重复,提高可维护性,并编写简洁的代码。

Java 8 之前的接口

在 Java 8 之前,接口只能包含抽象方法和常量变量。因此,实现类必须实现相同的方法。请参见下面的示例。

示例

package com.tutorialspoint;

interface util {
   public int sum(int a, int b);
}

public class Tester implements util {
   public static void main(String[] args) {
      Tester tester = new Tester();
      System.out.println(tester.sum(2, 3));
   }

   @Override
   public int sum(int a, int b) {		  
      return a + b;
   }
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

5

在上面的示例中,我们可以看到实现类必须实现该方法,因为它实现了接口。

Java 8 中接口中的默认方法

使用 Java 8,引入了默认方法,我们可以提供方法的默认实现,而无需实现类实现它。此功能是为了促进 lambda 表达式,其中现有集合框架可以在不实现接口所有方法的情况下与新引入的函数式接口一起工作。这有助于避免重写集合框架。请参见下面的示例

示例

package com.tutorialspoint;

interface util {
   public default int sum(int a, int b) {
      return a + b;
   }
}

public class Tester implements util {
   public static void main(String[] args) {
      Tester tester = new Tester();
      System.out.println(tester.sum(2, 3));
   }
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

5

Java 9 中接口中的私有方法

从 Java 9 开始,接口得到了进一步增强,可以包含私有方法。从 Java 9 开始,我们可以在接口中使用私有方法和私有静态方法。这有助于封装功能并有助于保持方法的完整性。由于私有方法不能被继承,因此它们可以在接口的公共方法中使用,如下例所示

示例

package com.tutorialspoint;

interface util {
   public default int operate(int a, int b) {
      return sum(a, b);
   }
   private int sum(int a, int b) {
      return a + b;
   } 
}

public class Tester implements util {
   public static void main(String[] args) {
      Tester tester = new Tester();
      System.out.println(tester.operate(2, 3));
   }
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

5

Java 9 中接口中的私有静态方法

类似地,我们可以使用私有静态方法,该方法可以从静态和非静态方法中调用。请参见下面的示例

示例

package com.tutorialspoint;

interface util {
   public default int operate(int a, int b) {
      return sum(a, b);
   }
   private static int sum(int a, int b) {
      return a + b;
   } 
}

public class Tester implements util {
   public static void main(String[] args) {
      Tester tester = new Tester();
      System.out.println(tester.operate(2, 3));
   }
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

5

私有静态方法不能在接口中调用非静态方法,并且它在接口外部不可访问。即使实现类也不能访问私有静态方法。

广告