2 jacob1 1 Jacob1_1 于 2016.03.26 22:22 提问

为什么jdk中的类不能被重写啊?

是jvm有什么保护措施吗?我的意思就是,假设:我自己写一个String类会和jdk中的冲突,也就报错,写不了,为什么呢?跪求图片说明

4个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.27 13:00
已采纳
  这是Java的类加载机制决定的,Java使用的是委托父类加载,所有的Java类库都是由指定的类加载器加载的,即使你定义一个一模一样的String类,最终引用加载的仍然是Java类库的类。这就是Java防止篡改的原理。
caozhy
caozhy   Ds   Rxr 2016.03.26 22:26

当然是这样,否则很可怕了。比如说你的程序中有一个加密的逻辑,有人编写一个恶意的插件程序,把随机数生成,甚至加密的库函数全部都重写了,你的程序的加密就失效了,这多可怕。
至于你说的String类,在java中定义为final类,所以也没办法通过派生重写。

luochoudan
luochoudan   Ds   Rxr 2016.03.26 23:20

String典型的不可变类,不可能被重写。

u013755250
u013755250   2016.03.27 12:28

干嘛要重写啊,继承就是了,当然,还有些类是不让继承的,string就是一个。并且jdk的东西人家已经打包成架包了,如果你修改了,你需要做的是,解压,修改,压缩,那就是另一回事了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!