繁体   English   中英

为什么私有内部接口的方法必须公开?

[英]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 :(
        }
    }
}

我想没有办法解决这个问题?

接口的所有方法都是publicabstract 那是规则。

仅将它们public是有意义的,因为它们将通过实现可能来自不同包的类来实现。

即使是内部interface ,也仍然是interface因此规则不会更改。

接口上的所有方法都必须声明为public 未在foo方法上指定访问修饰符会导致默认情况下为它分配package protected访问。 由于package protectedpublic package protected更难访问,因此代码减少了foo方法的可访问性。

inteface所有方法都是publicabstract 如果您未定义任何修饰符,则默认情况下它是publicabstract

覆盖的一般规则是您不能降低方法的可见性。 在类中,如果您未定义任何修饰符,则默认情况下它将是默认值,并且默认情况下不那么可见,然后是public。 所以这里一定是公开的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM