首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

为何final类能禁止clone()

2011-12-20 
为什么final类能禁止clone()在《java编程思想》里面有这样一句话:将类设为final可禁止克隆的发生。由于Single

为什么final类能禁止clone()
在《java   编程思想》里面有这样一句话:将类设为final可禁止克隆的发生。由于Singleton是从Object直接继承的,所以clone()方法会保持protected(受保护)属性,不能够使用它(强行使用会造成编译时错误)。
        为什么在Singleton里面clone()方法保持了Object类的protected属性之后,这个类就不能使用clone()方法,从而做到禁止克隆了呢?
        一直没有想明白怎么回事?

[解决办法]
只有继承Cloneable接口clone才是有效地
[解决办法]
您可以看下clone()这个方法都是在那个类里面的方法。
您说的那个类里面好像没有clone()这个方法
[解决办法]
"将类设为final可禁止克隆的发生 "...
从没听说过,估计是说一个non-cloneable的类,final以后可以禁止克隆吧?估计中文翻译有问题??也许是上下文不全...
我猜原意也许是:一个类本身由于只是继承了Object的protected的clone,所以是non-cloneable的,如果你不把它设为final,该类使用者有可能,继承该类并implement Cloneable...

总之一个cloneable的final类,当然肯定是可以clone的。
lz可以自己试一下 像public final class DemoClass implements Cloneable 的类肯定是可以clone的,当然你得重载一个public的clone.

热点排行