抽象方法和默认方法有什么区别?
我知道这个问题之前已经得到了回答,但并不像Aristocrates那样。
在知道“Aristocrates”的回答之前, 我认为默认方法与defender方法不同,而且 - 默认方法只不过是接口内的抽象方法(没有关键字摘要)。这两个错误的概念引发了这个愚蠢的问题。我从来没有打算通过问一个已经“问得好但回答良好”的问题来麻烦这些人。
我想删除这个问题,但我没有因为两个原因 - 1.stackoverflow阻止了我,2.Aristocrates的答案非常棒。
答案 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");
}
}