【问题标题】:Public members in package private class包私有类中的公共成员
【发布时间】:2013-10-10 06:49:07
【问题描述】:

我想知道在包私有类中包含公共成员是否可以(不被认为是不好的做法)。我倾向于将 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
    }
}

【问题讨论】:

  • 呸,最好的办法是保持一致。
  • 有时无法避免。实现的接口方法需要公开。

标签: java oop coding-style


【解决方案1】:

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

这取决于。如果您要覆盖现有方法(例如 toString())或实现接口,则不会。

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

【讨论】:

  • “设计您的方法访问权限,以便如果有人仅更改类访问权限以使其成为公共类,您也不想更改方法访问权限”。我想这正是我正在做的,只是无法有意识地表达。谢谢!
猜你喜欢
  • 2014-10-27
  • 2014-06-03
  • 1970-01-01
  • 2016-04-30
  • 2015-05-04
  • 2014-09-22
  • 1970-01-01
  • 2016-07-31
  • 1970-01-01
相关资源
最近更新 更多