公共接口和抽象接口的区别?

时间:2013-07-17 16:36:59

标签: java

有人能告诉我指定interface public和abstract之间的区别吗?

public interface Test{} 

abstract interface Test{}

5 个答案:

答案 0 :(得分:4)

前者是一个可以从任何地方访问的界面。后者(因为abstract是superfluous)是一个可以在同一个包中访问的接口,因为它有默认的访问修饰符。

答案 1 :(得分:0)

接口是隐含的抽象。因此不需要abstract interface

来自JLS:http://docs.oracle.com/javase/specs/jls/se7/html/jls-9.html#jls-9.1.1.1

  

9.1.1.1。抽象接口

     

每个界面都是隐式抽象的。

     

此修饰符已过时,不应在新程序中使用。

答案 2 :(得分:0)

将接口声明为abstract是多余的,因为它们都是abstract的定义。那么唯一的区别就是public组件。您的第一个界面(公共)可以从任何地方访问,而您的第二个界面(具有默认可见性)是包私有的,这意味着它只能在自己的包中访问。

答案 3 :(得分:0)

public abstract interface表示它将在所有包中提供。但由于默认访问,abstract interface仅在当前包中可用。在此处阅读有关访问说明符的更多信息:

http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

包本质上是抽象的,这意味着它们无法被实现。包中的所有方法都是抽象的。使用纯粹抽象的方法,强制实现类来覆盖它们。

答案 4 :(得分:0)

与往常一样,JLS提供了答案(JLS 9.1.1.1):

  

每个界面都是隐式抽象的。

当然,我假设您的意思是在第二个示例中包含public修饰符。如果不这样做,那么两者之间还存在其他差异 - 但它们与abstract关键字无关。