0

谁能告诉我指定接口公共和抽象之间的区别?

public interface Test{} 

abstract interface Test{}
4

5 回答 5

4

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

于 2013-07-17T16:39:02.020 回答
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。抽象接口

每个接口都是隐式抽象的。

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

于 2013-07-17T16:38:07.170 回答
0

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

于 2013-07-17T16:38:17.960 回答
0

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

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

并且包本质上是抽象的,这意味着它们不能被实例化。并且包中的所有方法都是抽象的。拥有纯抽象方法,要求实现类覆盖它们。

于 2013-07-17T16:38:49.187 回答
0

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

每个接口都是隐式抽象的。

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

于 2013-07-17T16:39:32.143 回答