Java编程思想拾遗(5) 访问权限控制

469 阅读1分钟

访问权限

控制对成员的访问权限有两个原因:

  • 第一,为了使用户不要碰触那些他们不该碰触的部分,这些部分对于类内部的操作时必要的,但是它并不属于客户端程序员所需接口的一部分。
  • 第二,为了让类库设计者可以更改类的内部工作方式,而不必担心这样会对客户端程序员产生重大的影响。

默认权限

除了private外,其他修饰符都默认都包含了包访问权限。

private访问控制

继承而来的类既可以访问public成员也可以访问protected成员,但访问private成员却不行。构造器也是允许private修饰的,此外它将阻止对此类的继承。

类既不可以是private的(这样会使得除了该类外,其它任何类都不可以访问它),也不可以是protected的(内部类除外),所以对于类的访问权限,仅有两个选择:包访问权限或public,如果不希望其它任何人对该类拥有访问权限,可以把所有的构造器都指定为private,从而阻止任何人创建该类的对象,但是有一个例外,就是你在该类的static成员内部可以创建。

class Soup {
    private Soup() {}
    public static Soup makeSoup() {
        return new Soup();
    }
}