【问题标题】:Difference between abstract methods and default methods [duplicate]抽象方法和默认方法之间的区别[重复]
【发布时间】:2014-10-05 20:17:35
【问题描述】:

抽象方法和默认方法有什么区别?

我知道这个问题之前已经回答过了,但不是以 Aristocrates 的方式回答。

在知道“贵族”的答案之前, 我认为默认方法与防御者方法不同,并且 - 默认方法只不过是接口内的抽象方法(没有关键字抽象)。这两个错误的概念导致了这个愚蠢的问题被问到。我从来没有打算通过问一个已经“问得好,回答得好的”问题来麻烦人们。

我想删除这个问题,但我没有因为两个原因 - 1.stackoverflow 阻止了我,2.Aristocrates 的回答非常棒。

【问题讨论】:

  • 两者都在接口中,但默认方法有一个实现。就这么简单。
  • “对不起,如果这个问题之前有人问过这个问题”所以你在问之前甚至没有花一秒钟时间搜索它?
  • 他们需要带回“缺乏最低限度的理解”
  • 怎么还开着?

标签: java


【解决方案1】:

抽象方法

抽象方法是没有方法体的方法。本质上,它们只是方法声明,仅包含方法签名。

例子:

public abstract void hello(int i);

抽象方法可以在接口或抽象类中。请注意,在接口中,方法默认是抽象的,因此 abstract 修饰符通常被省略。

默认方法

默认方法是接口中提供了“默认”实现的方法。换句话说,实现接口的非抽象类不必重写接口中定义的默认方法。

例子:

default public void otherHello(int i) {
    System.out.println("Hello");
}

示例

这是一个具有抽象和默认方法的接口以及实现该接口的类的有效示例:

public interface Hello {

    public abstract void hello(int i);

    default public void otherHello(int i) {
        System.out.println("Hello");
    }
}

public class Hi implements Hello {

    @Override
    public void hello(int i) {
        System.out.println("Only have to implement this method");
    }
}

【讨论】:

    猜你喜欢
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2012-08-27
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多