有个疑惑,为什么有时需要new一个对象
比如: Student sru =new Student();
而有时候却是像工厂模式那样 ".",通过点的instance来获取.
上网查了下还有克隆方法获取对象的
那么该如何区分什么时候该用哪种方法获取对象呢.还是就像"1+1=2"一样,就是这么规定的?
这里有两个问题,一个是,简单类型,比如 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
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。