java接口上的抽象方法是啥[重复]

Posted

技术标签:

【中文标题】java接口上的抽象方法是啥[重复]【英文标题】:what is a abstract method on a interface in java [duplicate]java接口上的抽象方法是什么[重复] 【发布时间】:2012-03-05 20:49:56 【问题描述】:

可能重复:Why would one declare a Java interface method as abstract?

我在我们的一个 ejb 接口中找到了以下代码。有谁知道抽象在接口中的作用?如果您这样做,还请解释为什么可能需要它或提供参考以阅读它=)

@Local
public interface IDomasOrderProcessor 

    public abstract void executeOrderLines(List<OrderLine> lines);
    public abstract void setupJob(List<OrderLine> lines);
    public abstract void setupJob(OrderLine line);

【问题讨论】:

【参考方案1】:

abstract 在这种情况下是多余的。根据定义,interface 上定义的所有方法都是 publicabstract

摘录Java Language Specification section 9.4

接口主体中的每个方法声明都是隐式的 抽象的,所以它的主体总是用分号表示,而不是 块。

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

【讨论】:

“公共”也是如此,在这种情况下,顺便说一句。也就是说,你可以同时放弃两者,它会做同样的事情。代码最初可能是一个经过重构的抽象类。 确实,public 也是如此。我将其添加到答案中,因为我的第一个有点简洁。【参考方案2】:

publicabstract 修饰符都隐含在接口中,应避免使用。

【讨论】:

【参考方案3】:

根据定义,接口中的方法是公共的和抽象的。我听一些人说他们觉得这样明确地声明他们会更清楚,但对我来说这似乎是额外的噪音。

【讨论】:

肯定是噪音。 (实际上,在我意识到 public 是多余的之前,我已经使用 Java 编程多年了。)【参考方案4】:

根据this 记录interface的所有方法是publicabstract,所以没有办法在interface内部显式定义abstract方法。

【讨论】:

以上是关于java接口上的抽象方法是啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java抽象类和接口

Java中接口和抽象类区别详解

Java 8需要后卫(默认)方法[重复]

学习Java第七周

在Java类方法中参数为interface接口对象的作用是啥?

Java 8中接口和抽象类之间的根本区别[重复]