Java接口中的抽象方法

sea*_*ges 5 java inheritance

我经常看到的东西,但从来没有想过要质疑它......在Java 界面中,有什么区别:

public void myMethod();
Run Code Online (Sandbox Code Playgroud)

和

public abstract void myMethod();
Run Code Online (Sandbox Code Playgroud)

我理解Java类中abstract关键字的用途,但它在接口中的用途(如果有的话)是什么?

nan*_*nan 12

两个声明都完全相同,所有接口方法都没有实现(是抽象的),因此abstract关键字是冗余的.在我看来,写abstract这种情况会增加代码的冗长程度.

  • 公共修饰语也是多余的. (4认同)

Gor*_*vic 8

所有方法声明都public与abstract一个接口.根本没有指定它.

void myMethod();这里真的只需要.


Dea*_*mer 6

来自Java规范:

  • 9.4抽象方法声明.. .. ..

接口主体中的每个方法声明都是隐式抽象的,因此它的主体始终用分号表示,而不是块.

接口主体中的每个方法声明都是隐式公开的.