是jvm有什么保护措施吗?我的意思就是,假设:我自己写一个String类会和jdk中的冲突,也就报错,写不了,为什么呢?跪求
这是Java的类加载机制决定的,Java使用的是委托父类加载,所有的Java类库都是由指定的类加载器加载的,即使你定义一个一模一样的String类,最终引用加载的仍然是Java类库的类。这就是Java防止篡改的原理。
当然是这样,否则很可怕了。比如说你的程序中有一个加密的逻辑,有人编写一个恶意的插件程序,把随机数生成,甚至加密的库函数全部都重写了,你的程序的加密就失效了,这多可怕。
至于你说的String类,在java中定义为final类,所以也没办法通过派生重写。
String典型的不可变类,不可能被重写。
干嘛要重写啊,继承就是了,当然,还有些类是不让继承的,string就是一个。并且jdk的东西人家已经打包成架包了,如果你修改了,你需要做的是,解压,修改,压缩,那就是另一回事了
首先重写只发生在继承关系里面(instance),类没有重写一说。
你说的那个String被final修饰了,被final关键字修饰的不能被继承。
我想你说的是为什么你写了一个和jdk相同类名的类,为什么没有用吧。
因为你jdk里面的方法没有一个方法是用你的方法(也就是没有导你的包,用的不是你的类)。
就像平时用的util工具包,这里面写的就是jdk没有的类或者接口,有些是别人写的你拿来用有些自己可以写。