抽象方法和默认方法之间的区别

时间:2014-08-12 16:47:47

标签: java

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

我知道这个问题之前已经得到了回答,但并不像Aristocrates那样。

在知道“Aristocrates”的回答之前, 我认为默认方法与defender方法不同,而且 - 默认方法只不过是接口内的抽象方法(没有关键字摘要)。这两个错误的概念引发了这个愚蠢的问题。我从来没有打算通过问一个已经“问得好但回答良好”的问题来麻烦这些人。

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

1 个答案:

答案 0 :(得分:2)

抽象方法

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

示例:

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");
    }
}