Difference between abstract methods and default methods
抽象方法和默认方法有什么区别?
我知道这个问题以前有人回答过,但贵族们没有。
在知道"贵族"的答案之前,我认为默认方法不同于Defender方法,并且-默认方法只不过是接口内的抽象方法(没有关键字abstract)。这两个错误的概念导致这个愚蠢的问题被问到。我从来没有想过要问一个已经"问得好,回答得好"的问题来麻烦大家。
我想删除这个问题,但我没有删除,因为有两个原因——1.stackoverflow阻止了我,2.贵族们的回答是极好的。
- 两者都在接口中,但默认方法有一个实现。很简单。
- "对不起,如果这个问题以前被别人问过"所以你在问之前甚至没有花一秒钟的时间来搜索它?
- stackoverflow.com/questions/19998454/…?
- 他们需要恢复"缺乏最低限度的理解"
- 怎么还开着?
- @红五哦,是的……但对什么的了解很少?如何谷歌?或者如何搜索问题?
- 问题是我对默认方法有一个错误的概念——我认为默认方法不同于Defender方法,并且——默认方法只不过是接口内的抽象方法(没有关键字抽象)。这两个错误的概念导致这个愚蠢的问题被问到。我从来没有想过要问一个已经"问得好,回答得好"的问题来麻烦大家。
抽象方法
抽象方法是没有方法体的方法。本质上,它们只是方法声明,只包含方法签名。
例子:
1
| public abstract void hello(int i); |
抽象方法可以在接口或抽象类中。注意,在接口中,默认情况下方法是抽象的,因此通常不使用abstract修饰符。
默认方法
默认方法是接口中提供了"默认"实现的方法。换句话说,实现接口的非抽象类不必重写接口中定义的默认方法。
例子:
1 2 3
| default public void otherHello (int i ) {
System. out. println("Hello");
} |
例子
下面是一个带有抽象和默认方法的接口以及实现该接口的类的有效示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 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");
}
} |