java构造方法的私有——产生本类中的实例化对象(精华)

2019年2月14日23:27:35 发表评论 893 views
/**
 * Created by xabcd on 2019/2/14.
 */
public class testprivate2
{
    String name;
    //本类中声明一个Person对象p,使用final标记,表示不能再重新实例化
    private static final testprivate2 p = new testprivate2();
//上面生成一个实例化对象,且被标识静态,且final表示对象p无法重新实例化
    private testprivate2()//封装 外部无法进行实例化
    {
        name = "张三";
    }
    public static testprivate2 getP()
    {
        return p;
    }
    public static void main(String args[])
    {
        //声明一个testprivate2类的对象
        testprivate2 p = null;//声明对象但是未实例化
        p = testprivate2.getP();//调用类中的getP()方法,此方法返回类的实例化对象
        System.out.println(p.name);
    }
}

结果:张三


第 6 ~ 9private testprivate2() 行将 Person 类 的 构造 方法 封装 起来, 外部 无法 通过 其 构造 方法 产生 实例 化 对象。 第 5 行 声明 一个 Person 类 的 实例 化 对象, 此 对象 是在 Person 类 内部 实例 化, 所以 可以 调用 私有 构造 方法。 另外, 此 对象 被 标识 为 static 类型, 表示 为 一 静态 属性, 同时 此 对 象被 私有化, 另外 在 声明 Person 对象 的 时候 加上 了 一个 final 关键字, 此 关键字 表示 Person 的 对象 p 不能 被 重新 实例 化( 关于 final, 请参阅 第 11 章 中的 11. 3 一节)。 第 21 行 声明 一个 Person 类 的 对象 p, 但未 实例 化。 第 22 行 调用 Person 类 中的 getP() 方法, 此 方法 返回 Person 类 的 实例 化 对象。 【范例 分析】 从 程序 中 可以 看出, 无论 在 Person 类 的 外部 声明 多少 个 对象, 最终 得到 的 都是 同一个 引用, 因为 此类 只能 产生 一个 实例 对象, 这种 做法 在 设计 模式 中 被称为 单 态 模式。 而 所谓 设计 模式 也就 是在 大量 的 实践中 总结 和 理论化 之后 优选 的 代码 结构、 编程 风格 以及 解决问题 的 思考 方式。 有兴趣 的 读者 可以 研究 一下。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: