Java9新特性之——接口中的私有方法

Java9新特性之——接口中的私有方法

前言:Java9的发布一推再推,下面就让我们一起来看看Java9有哪些新特性吧!

  • Java7中的接口
  • Java8中的接口
  • Java9中的接口
  • 在接口中定义私有方法
  • 为什么我们需要在接口中使用私有方法

Java7中的接口

在Java SE 7或更早版本中,一个接口中只能只能定义如下两种:

  • 常量
  • 抽象方法

我们不能在接口中提供方法实现。如果我们要提供抽象方法和非抽象方法(方法与实现)的组合,那么我们就得使用抽象类。

例如:

public interface JavaSeven{
      String TYPE_NAME = "java seven interface";
      int TYPE_AGE = 20;
      String TYPE_DES = "java seven interface description";

      void method01();
      void method02(String arg);
      void method03(String arg1,int arg2);
      String method04();
   }

这里我们定义了一些常量和公共抽象方法。如果我们想在这里提供这些方法的实现,如何解决这个问题呢?我们应该使用抽象类来解决Java SE 7中的上述情况。

Java8中的接口

在Java SE 8 Release中Java接口引入了一些新功能——默认方法静态方法。我们可以在Java SE 8的接口中编写方法实现,仅仅需要使用“default”关键字来定义它们。

在Java SE 8中,一个接口中能定义如下几种:

  • 常量
  • 抽象方法
  • 默认方法
  • 静态方法

例如:

public interface JavaEight{
      String TYPE_NAME = "java seven interface";
      int TYPE_AGE = 20;
      String TYPE_DES = "java seven interface description";

      default void method01(String msg){
         //TODO
      }
      default void method02(){
         //TODO
      }

      // Any other abstract methods
      void method03();
      void method04(String arg);
      ...
      String method05();
   }

这里我们为所有方法提供了实现。如果我们观察上面的代码,我们觉得有些代码冗余。如果要将冗余代码提取为常用方法,那应该使用公共方法。但是,如果API开发人员不想向客户端公开任何其他方法。我们如何解决这个问题?我们应该使用抽象类来解决Java SE 8中的上述情况。

Java9中的接口

为了解决上述的问题Java9提供了新的功能——在接口中使用private私有方法。我们可以使用’private’访问修饰符在接口中编写私有方法。

在Java SE 8中,一个接口中能定义如下几种:

  • 常量
  • 抽象方法
  • 默认方法
  • 静态方法
  • 私有方法
  • 私有静态方法

例如:

 public interface JavaNine{
      String TYPE_NAME = "java seven interface";
      int TYPE_AGE = 20;
      String TYPE_DES = "java seven interface description";

      default void method01(){
        //TODO
      }
      default void method02(String message){
        //TODO
      }

      private void method(){
         //TODO 
      }

      // Any other abstract methods
      void method03();
      void method04(String arg);
      ...
      String method05();
   }

在这里,我们将冗余代码提取到通用的私有方法中,以便我们的API客户端无法看到它们。

在接口中定义私有方法

在Interface中编写私有方法时,我们应该遵循以下规则:

  • 我们应该使用私有修饰符(private)来定义这些方法。
  • 我们不能同时使用私有修饰符(private)和abstract来定义这些方法。
    • “私有”方法意味着完全实现的方法,因为子类不能继承并覆盖此方法。
    • “抽象”方法意味着无实现方法。这里子类应该继承并覆盖此方法。
  • 私有方法必须包含方法体,必须是具体方法。
  • 这些接口私有方法仅在该接口内是有用的或可访问的。我们无法从接口访问或继承私有方法到另一个接口或类。

**总结:**Java9为我们提供的新功能——在接口中定义私有方法,对我们有很大的帮助,这将减少重复代码,提高代码的重用性,同时将私有方法写在接口中,不让子类看到,有很好的安全性。

    原文作者:tracydragonlxy
    原文地址: https://blog.csdn.net/tracydragonlxy/article/details/78082600
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞