Java接口中的默认方法 vs 静态方法

Java中的接口类似于类,但是它仅包含final和static的抽象方法和字段。

由于Java8在接口中引入了静态方法和默认方法。

默认方法 -与其他抽象方法不同,这些方法可以有默认实现。 如果接口中有默认方法,则在已经实现此接口的类中不强制重写该方法。

简而言之,您可以使用实现类的对象来访问接口的默认方法。

示例

interface MyInterface{

   public static int num = 100;

   public default void display() {

      System.out.println("MyInterface的显示方法");

   }

}

public class InterfaceExample implements MyInterface{

   public static void main(String args[]) {

      InterfaceExample obj = new InterfaceExample();

      obj.display();

   }

}

输出结果

MyInterface的显示方法

静态方法  - 使用static关键字声明它们,并将它们与接口一起加载到内存中。您可以使用接口名称访问静态方法。

如果接口具有静态方法,则需要使用接口名称来调用它,就像类的静态方法一样。

示例

在下面的示例中,我们在接口中定义一个静态方法,并从实现该接口的类中访问它。

interface MyInterface{

   public void demo();

   public static void display() {

      System.out.println("这是一个静态方法");

   }

}

public class InterfaceExample{

   public void demo() {

      System.out.println("这是demo方法的实现");

   }

   public static void main(String args[]) {

      InterfaceExample obj = new InterfaceExample();

      obj.demo();

      MyInterface.display();

   }

}

输出结果

这是demo方法的实现

这是一个静态方法

静态和默认方法之间的区别-

调用方法

  • 您可以使用接口名称来调用静态方法。

  • 要调用默认方法,您需要使用实现类的对象。

重写方法

  • 如果需要,可以从实现类中重写接口的默认方法。

示例

interface MyInterface{

   public static int num = 100;

   public default void display() {

      System.out.println("MyInterface的显示方法");

   }

}

public class InterfaceExample implements MyInterface{

   public void display() {

      System.out.println("类的显示方法");

   }

   public static void main(String args[]) {

      InterfaceExample obj = new InterfaceExample();

      obj.display();

   }

}

输出结果

类的显示方法
  • 您无法覆盖接口的静态方法;您只需使用接口名称即可访问它们。如果尝试通过在实现接口中定义类似的方法来覆盖接口的静态方法,则它将被视为该类的另一个(静态)方法。

示例

interface MyInterface{

   public static void display() {

      System.out.println("接口的静态方法");

   }

}

public class InterfaceExample{

   public static void display() {

      System.out.println("类的静态方法");

   }

   public static void main(String args[]) {

      InterfaceExample obj = new InterfaceExample();

      MyInterface.display();

      InterfaceExample.display();

   }

}

输出结果

接口的静态方法

类的静态方法

以上是 Java接口中的默认方法 vs 静态方法 的全部内容, 来源链接: utcz.com/z/331600.html

回到顶部