document.write('
A
[解析] 在Java语言中,最常用的创建对象的方法为使用new创建一个对象,这种方式通过调用类的构造
方法来完成对象的创建,除此之外,还有如下几种创建对象的方法:
 1)调用对象的clone方法,需要以下几个步骤才能使用clone方法:
 ①实现clone的类首先需要继承Cloneable接口。Cloneable接口实质上是一个标识接口,没有任何接
口方法。
 ②在类中重写Object类中的clone方法。
 ③在clone方法中调用super.clone()。无论clone类的继承结构是什么,super.clone()都会直接或间
接调用java.lang.Object类的clone()方法。
 示例代码如下:
class Obj implements Cloneable{
privateint aInt=0;
public Obj(){
System.out.println("construct");
}
public int getAInt() {return aInt;}
public void setAInt(int int1) {aInt=int1;}
public void changeInt() {this.aInt=1;}
public Object clone(){
Object o=ull;
try{
o=(Obj)super.clone();
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
return o;
}
}
public class Test{
public static void main(String[]args){
Obj a=ew Obj();
0bj b=(Obj)a.clone();
b.changeInt();
System.out.println("a:"+a.getAInt());
System.out.println("b:"+b.getAInt());
}
}
程序的运行结果为:
construct
a:0
b:1
从以上程序运行结果可以看出,在调用a.clone()方法时,系统创建了新的对象,但是没有调用构造方
法。 2)通过反射机制来创建对象,如下例所示:
class Person{
String name="Jack";
public Person(){
System.out.println("construct");
}
public String toString(){ return name;}
}
public class Test{
public static void main(String[]args){
Class classType;
try{
classType=Class.forName("Person");
Person p=(Person)classType.newInstance();
System.out.println(p);
}catch(Exception e){
e.printStackTrace();
}
}
}
程序的运行结果为:
construct
a:0
b:1
从以上运行结果可以看出,这种方法也调用了构造方法。 3)通过反序列化的方式创建对象,示例代码
如下:
class Person{
String name="Jack";
public Person(){
System.out.println("construct");
}
public String toString() { return name;}
}
public class Test{
public static void main(String[]args){
Class classType;
try{
classType=Class.forName("Person");
Person p=(Person)classType.newInstance();
System.out.println(p);
}catch(Exception e){
e.printStackTrace();
}
}
}
程序的运行结果为:
construct
Jack
 从以上运行结果可以看出,用反序列化的方式创建对象也不需要调用构造方法。
 所以,本题的答案为A。
 

 

');