关于java:接口中的方法可见性

Methods visibility in interface

在默认情况下,接口中的所有方法都具有公共可见性模式吗?


接口中的所有方法都默认为public

参见Java语言规范

All members of interfaces are
implicitly public.


所有接口方法都是public abstract,所有接口字段都是public static final

请看这里。


在此添加其他答案:所有方法都是公共的,但是,如果接口本身是包本地的,那么实际上所有方法也都是包本地的。

因此,通过使包本地接口扩展公共方法,可以混合公共方法和包本地方法。

1
2
3
4
5
6
7
public interface P{
  void iAmPublic();
}

interface L extends P{
  void iAmPackageLocal();
}

在这里,L有效地具有一种公共和一种包本地方法。来自包外部的客户机将只看到iAmPublic(),而来自包内部的客户机将看到这两种方法。

同样,您可以在其他类中嵌套接口,以实现更紧密的方法可见性。


是的,接口中的所有方法都是隐式公共和抽象的。

检查Java语言规范第9.4章


是的,接口的所有方法都是公共的,不能有任何其他访问修饰符(即默认的公共访问修饰符是唯一有效的访问修饰符)