在Java中,何时应该在接口中使用抽象方法?

Joh*_*ley 5 java coding-style interface abstract-methods

我在Java中有以下界面

public interface IFoo
{
    public abstract void foo();
    public void bar();
}
Run Code Online (Sandbox Code Playgroud)

foo()和bar()有什么区别?我什么时候应该使用抽象?

除非我遗漏了一些微妙的东西,否则两者似乎都能实现我的目标?

更新重复为什么将Java接口方法声明为抽象?

Ale*_*ard 18

没有任何功能差异.java接口中没有提供任何实现,因此所有方法声明都是隐式抽象的.

见[1]:http://java.sun.com/docs/books/tutorial/java/IandI/abstract.html

以上直接引用:

注意:接口中的所有方法(请参阅"接口"部分)都是隐式抽象的,因此抽象修饰符不与接口方法一起使用(它可能是 - 它只是没有必要).


Mar*_*ech 17

接口中的方法都publicabstract默认.有没有什么区别foo(),并bar()和您可以安全地删除所有publicabstract关键字.

  • 我不会说"默认"而是"隐含地"."默认情况下"可能会被解释为除"公共摘要"之外还存在其他选项. (4认同)

jan*_*nko 5

你没有遗漏任何东西.从Java语言规范:

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

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

换句话说,您可以省略接口方法public以及abstract接口方法.