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
上定义的所有方法都是 public
和 abstract
。
摘录Java Language Specification section 9.4
接口主体中的每个方法声明都是隐式的 抽象的,所以它的主体总是用分号表示,而不是 块。
接口主体中的每个方法声明都是隐式的 公开。
【讨论】:
“公共”也是如此,在这种情况下,顺便说一句。也就是说,你可以同时放弃两者,它会做同样的事情。代码最初可能是一个经过重构的抽象类。 确实,public
也是如此。我将其添加到答案中,因为我的第一个有点简洁。【参考方案2】:
public
和 abstract
修饰符都隐含在接口中,应避免使用。
【讨论】:
【参考方案3】:根据定义,接口中的方法是公共的和抽象的。我听一些人说他们觉得这样明确地声明他们会更清楚,但对我来说这似乎是额外的噪音。
【讨论】:
肯定是噪音。 (实际上,在我意识到public
是多余的之前,我已经使用 Java 编程多年了。)【参考方案4】:
根据this
记录interface
的所有方法是public
和abstract
,所以没有办法在interface
内部显式定义abstract
方法。
【讨论】:
以上是关于java接口上的抽象方法是啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章