【选自BD面试题】
题面解析:本题也是在大型企业的面试中最常问的问题之一,主要考查创建对象的方式。下面我们一起来看看Java创建对象的几种方式吧。
解析过程:共有四种创建对象的方法。
一、通过new语句实例化一个对象
使用new关键字创建对象是最常见的一种方式,但是使用new创建对象会增加耦合度。在使用new时需要先查看new后面的类型,然后再决定分配多大的内存空间;接着可以通过调用构造函数,来对对象的各个域进行填充;根据构造方法的返回值进行对象的创建,最后把引用地址传递给外部。例如:
package test; /**使用new关键字创建对象*/ public class NewClass { public static void main(String[] args) { Hello h = new Hello(); h.sayWorld(); } }
二、通过反射机制创建对象
使用反射机制的Class类的newInstance()方法。
三、通过clone()方法创建一个对象
在使用clone()方法时,不会调用构造函数,而是需要有一个分配了内存的源对象。在创建新对象时,首先应该分配一个和源对象一样大的内存空间。
四、通过反序列化的方式创建对象
序列化就是把对象通过流的方式存储到文件里面,那么反序列化就是把字节内容读出来并还原成Java对象,这里还原的过程就是反序列化。在使用反序列化时也不会调用构造方法。