【问题标题】:can we implement any methods inside interface in java [duplicate]我们可以在java中实现接口内的任何方法吗?
【发布时间】:2015-11-25 12:53:18
【问题描述】:
interface temp
{
   public int add(int a,int b)
   {
      return a+b;
   }
}

我们可以在接口中实现上述方法吗? 或者我们只需要在接口中定义方法。

【问题讨论】:

  • @BackSlash:该线程已过时。在当前版本的 Java 中,可以在接口中实现方法,尽管是默认方法。
  • @Stultuske 你读过有问题的线程吗?接受的答案就是这样。
  • @AlexisC.: 毫无疑问,这就是他们在 Java 6 上奋力拼搏的原因
  • 我同意副本有点不对劲,因为它谈到了静态方法(默认方法只是顺便提及)。无论哪种方式,使用 Java 8,您现在都有这两个选项。在此之前,你什么都没有。

标签: java interface


【解决方案1】:

是的,你可以在 Java 8 中使用默认方法

interface temp
{
   default public int add(int a,int b)
   {
      return a+b;
   }
}

正如 Thilo 在 cmets 中提到的,Java 8 还增加了在接口中使用静态方法的可能性:

interface temp
{
   public static int add(int a,int b)
   {
      return a+b;
   }
}

【讨论】:

  • 吹毛求疵:既然 OP 询问的是 any 方法,那么答案是否定的,因为我们无法从 Object 类中实现这种方法,例如 equalstoString
  • 吹毛求疵的回应:OP 询问我们是否可以实现 any 方法。不是每个方法。
  • 但是如果您在界面中为toString 提供默认值会发生什么?实现它的类上出现一些编译错误(要求它明确指定要继承哪个toString)?
  • @Thilo 我认为它从未使用过,因为从父类继承的toStringObject 始终具有优先权
  • @Thilo 它确实会产生编译错误。关于第二点,如果您继承相同的默认方法,则必须通过显式将调用委托给某个接口或提供您自己的实现来提供实现。
【解决方案2】:

如果你没有使用java 8,那么你只能在接口中定义方法。

 public interface temp {
     int add(int a,int b);
}

这是java 8中引入的新功能“接口中的默认方法”。

【讨论】:

    猜你喜欢
    • 2015-11-10
    • 2010-09-17
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 2018-01-25
    • 2011-06-03
    • 2015-02-01
    • 1970-01-01
    相关资源
    最近更新 更多