[英]Why must the methods of a private inner interface be public?
我有一个实现内部私有接口的私有内部类。 我通常在私有内部类中省略private修饰符,以使代码更整洁。 不幸的是,在这种情况下,即使我实际上并未降低可见性,也会出现“无法降低可见性错误”的情况。
public class Foo {
private interface IBar{
void foo();
}
private static class Bar implements IBar{
@Override
public void foo() { // Must be public :(
}
}
}
我想没有办法解决这个问题?
接口的所有方法都是public
和abstract
。 那是规则。
仅将它们public
是有意义的,因为它们将通过实现可能来自不同包的类来实现。
即使是内部interface
,也仍然是interface
因此规则不会更改。
接口上的所有方法都必须声明为public
。 未在foo
方法上指定访问修饰符会导致默认情况下为它分配package protected
访问。 由于package protected
比public
package protected
更难访问,因此代码减少了foo
方法的可访问性。
inteface
所有方法都是public
和abstract
。 如果您未定义任何修饰符,则默认情况下它是public
和abstract
。
覆盖的一般规则是您不能降低方法的可见性。 在类中,如果您未定义任何修饰符,则默认情况下它将是默认值,并且默认情况下不那么可见,然后是public。 所以这里一定是公开的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.