开发者社区> 问答> 正文

创建对象和获取对象的方法区分

有个疑惑,为什么有时需要new一个对象
比如: Student sru =new Student();
而有时候却是像工厂模式那样 ".",通过点的instance来获取.
上网查了下还有克隆方法获取对象的
那么该如何区分什么时候该用哪种方法获取对象呢.还是就像"1+1=2"一样,就是这么规定的?

展开
收起
蛮大人123 2016-05-31 11:38:40 2456 0
2 条回答
写回答
取消 提交回答
  • 创建对象,有对象的初始化过程(一般伴随着内存分配); 获取对象,即引用已存在的对象,那么对象不会执行初始化过程。
    2019-07-17 19:21:43
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    这里有两个问题,一个是,简单类型,比如 float int (string不是,但是string有简化的语法,看上去好像是简单类型),这些不需要new就可以使用
    除此之外所有的类对象都需要new
    这是第一个问题。
    第二个问题,关于谁来new的问题。
    我们可以让调用者自己new,也可以让类的实现者或者第三者来new:

    class A
    {
        static private A a;
            A() {} //把默认的构造函数封闭,它是private的,只有内部才能new
            static public A getInstance()
            {
                if (a == null) a = new A(); //内部new
                    return a;
            }
    }

    这样外部只能通过调用
    A a = A.getInstance(); 得到A的对象实例
    这个经典的做法也叫“单例模式”
    我们也可以由第三方初始化:

    class A
    {
    }
    
    A foo() { return new A(); }
    void main()
    {
    A a = new A(); //直接调用new
    A a1 = foo(); //间接调用new
    }
    2019-07-17 19:21:43
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载