Java的访问权限拾零

一、Java中的访问权限修饰词: publicprotectedprivate

二、假如没有给定任何的访问权限,说明具有包访问权限,有时也成为“ friendly”。这意味着,当前的包中的其他类对那个成员有访问权限,但对于在这个包之外的所有类,这个成员却是private的。包访问权限的最大意义在于: 允许你将包内所有相关的类组织起来,使他们之间可以轻松的互相访问,相互作用

三、获得对某一成员访问权限的唯一途径:
  1. 用public关键字修饰该成员,则无论是谁,在任何地方都能访问到该成员。
  2. 不加任何的访问权限,并将其他类放置于同一个包内,这样,基于包访问权限,则该包内的其他类也可访问该成员。
  3. 通过继承,子类可以访问父类的protected的成员(但是private成员依然不可访问。)
  4. 提供访问器(accessor)和变异器(mutator)方法,即“get/set”方法。

四、类的修饰符只能是包访问权限或者public,不能是private或者protected的(内部类除外,内部类允许使用private或者protected来进行修饰。)如果不希望任何人创建该类的对象,你可以把所有的构造函数指定为private的,但是,有一个例外,就是该类的static成员内部可以创建,所以,如果你不希望别人通过构造函数创建实例的时候,可以像下面这样:
class Soup {
    /*
    * 将构造声明为private的,则别人在使用Soup类的时候,
    * 就不能通过new来创建该类的实例了。
    */
    private Soup() {}

    /*
    * 方法一:通过Soup.makeSoup()调用静态方法的方式来获得Soup的实例。
    */
    public static Soup makeSoup() {
        return new Soup();
    }

    /*
    * 方法二:创建一个静态对象,并返回实例。
    */
    private static Soup ps1 = new Soup();
    public static Soup access() {
        return ps1;
    }
}

同时【方法二】选择用了一种被称为“singleton”的设计模式,使你始终只能创建它的单一的一个对象。

你可能感兴趣的:(java,设计模式,Access)