当前位置: 首页 > 面试题库 >

为什么克隆时不执行构造函数

程谭三
2023-03-14
问题内容

Animal animal = new Animal(101); //Constructor is executed.

Animal clone=(Animal)animal.clone()     //Constructor is not executed. Why ?

问题答案:

类中clone()给定方法的默认实现Object不调用任何构造函数。

它创建对象的“浅表副本”,因为它通过创建新实例然后通过分配复制内容来创建对象的副本,这意味着
如果您的Class包含可变字段,则原始对象和克隆都将引用同一内部对象

尝试看看此页面。



 类似资料:
  • 问题内容: 使用Promises时,为什么不能在代码库的其他地方触发并定义? 我不明白为什么,应该在声明诺言的地方本地化逻辑。这是疏忽大意,还是强制执行此参数有好处吗? 我相信执行程序功能应该是可选的,并且它的存在应该确定promise是否封装了解决方案。没有这样的授权,promise的可扩展性就更大,因为您不必立即启动异步。承诺也应该是可重置的。这是1档开关,1或0 或。可以附加许多平行和顺序的

  • 本文向大家介绍为什么要使用克隆?相关面试题,主要包含被问及为什么要使用克隆?时的应答技巧和注意事项,需要的朋友参考一下 克隆的对象可能包含一些已经修改过的属性,而 new 出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的“状态”就靠克隆方法了。

  • Javassist的API似乎允许我们创建类中声明的类初始值设定项(即静态构造函数)的精确副本: 但是,该副本还包括(公共/私有)静态最终字段。例如,以下类的静态构造函数: 事实上是: 因此,静态构造函数的精确副本也将包括对最终字段“名称”的调用。 有没有办法创建不包含对final字段的调用的静态构造函数的副本? --谢谢

  • 问题内容: 我是Java编程语言的初学者,最近我研究了 构造函数 不能在Java中继承,有人可以解释 为什么 吗? 问题答案: 简而言之,构造函数不能被继承,因为在子类中它具有​​不同的名称(子类的名称)。 您只能执行以下操作: 相反,方法是使用“相同名称”继承的,可以使用。 理由如下:继承构造函数没有多大意义,因为类A的构造函数意味着创建类型A的对象,而类B的构造函数意味着创建类B的对象。 不过

  • 问题内容: 必须使用无参数构造函数(像Hibernate这样的工具会在此构造函数上使用反射来实例化对象)。 我得到了这个手挥手的答案,但是有人可以进一步解释吗?谢谢 问题答案: hibernate,并且通常通过反射创建对象的代码用于创建类的新实例。此方法需要一个公共的无参数构造函数才能实例化该对象。对于大多数用例,提供无参数构造函数不是问题。 有一些基于序列化的技巧可以解决没有no-arg构造函数

  • 根据我的理解,当创建了临时对象时,将调用move构造函数。这里,函数返回一个临时对象,但我的程序没有打印来自移动构造函数的消息: