1、什么是标识接口?
2、java中的clone方法有什么作用?
3、使用clone()方法的步骤?
4、c++中有深拷贝和浅拷贝之分,java在使用clone复制对象时,也存在深和浅的区别,在编程时通过什么来判断该使用哪种复制方式?
5、深复制与浅复制的区别?
6、什么是反射机制?反射机制的主要作用?
7、在反射机制中,如何获取Class类?
8、java创建对象的几种方式?
参考回答:
1、没有任何方法声明的接口被叫做标识接口。
2、clone方法的作用是返回一个Object对象的复制。无论是深复制还是浅复制,它返回的都是一个新对象,而不是一个引用。
3、使用clone方法的步骤为(以下描述为浅复制):
(1)首先支持clone方法的类要实现Cloneable接口;
(2)在类中重写Object类中的clone方法;
(3)在clone方法中调用super.clone();
(4)把浅复制的引用指向原型对象新的克隆体。
4、在使用clone方法时,根据类中有无非基本数据类型的数据成员来选择克隆方式。如果没有非基本数据类型数据成员,使用浅复制;否则使用深复制。
5、(1)实现方式不同,浅复制的实现在上文已作出描述,深复制会在第三步有所不同,具体实现如下:
Object o=super.clone(); //先执行浅复制
//对每一个非基本数据类型的成员变量attr执行以下语句,确保它们实现了深复制:
o.attr=this.getAttr().clone();
最后返回o。
(2)复制结果不同。当类中含有非基本类型的数据成员时,浅拷贝此类对象后得到的新对象中包含的是原有对象中非基本数据类型成员的引用;而深拷贝后得到的新对象中则会生成与原有对象非基本数据类型成员相同值的副本。
6、java反射机制是指在运行状态下,对于任何一个类,都可以知道它的所有属性和方法,对于任何一个对象,都可以调用它的任意属性和方法。这种动态获取信息以及动态调用对象方法的功能叫做java的反射机制。
反射机制的一个主要作用是可以在运行时动态地创建对象。
7、在反射机制中,获得Class类的方法有:
(1)Class.forName(“类的路径”);
(2)类名.Class;
(3)实例.getClass()。
8、java创建对象的方式有以下4种:
(1)通过new语句实例化一个对象;
(2)通过clone方法创建一个对象;
(3)通过反射机制创建对象;
(4)通过反序列化的方式创建对象。