7

我想知道在包私有类中有公共成员是否可以(不被认为是不好的做法)。我倾向于向public我的默认可见性类的成员添加关键字,以表明这些成员是类 API 的一部分。

我这样做只是为了可读性,因为在这种情况下,公共成员与没有任何访问修饰符的成员具有基本相同的可见性(即包可见性)。那是对的吗?

例子:

class ModuleImplementationClass {
    private int fieldA;
    private String fieldB;

    private void someClassInternalMethod() {
         // impl
    }

    public int doSth() {
        // method that will be called by other classes in the package
    }
}
4

1 回答 1

12

我这样做只是为了可读性,因为在这种情况下,公共成员与没有任何访问修饰符的成员具有基本相同的可见性(即包可见性)。那是对的吗?

那要看情况了。如果您要覆盖现有方法(例如toString())或实现接口,则不会。

如果您不希望从包外部使用该方法,请将其设为包私有。如果您乐于在任何地方使用它,请将其公开。或者另一种思考方式:设计您的方法访问权限,以便如果有人仅更改访问权限以使其成为公共类,您也不想更改方法访问权限。

于 2013-10-03T14:12:08.860 回答