问个问题:为什么String类没有 clone方法?
String s=new String("");
Object o=s.clone()
提示:clone方法不可见!
请问,这是为什么?
yanhuahuo---
protected比package权限多一点的地方就在于可以被子类引用。但它同package一样不能被非该包中的其他类引用。
String所在的包为java.lang.String,而你自己写的类却不在这个包中,所以你不能访问到clone方法。
举个例子:
package com.sina.www;
public class A{
protected void function(){}
}
package com.sina.www;
public class B extends A{}
}
package com.sina.www;
public class AppOne{
public static void main(String[] args){
B b = new B();
b.function();//这是正确的。
}
}
package net.nytimes.www;
public class AppTwo{
public static void main(String[] args){
B b = new B();
b.function();//错误。因为不在同一包中。这和你所说的情况是一样的
}
}
http://www.javaworld.com/javaworld/jw-09-2001/jw-0907-java101guide.html
文章最后:
Why doesn't the String class allow you to clone String objects? (Hint: Think of immutability.)
所以,对于不懂的问题不是凭感觉哪个能理解就被糊弄,要有科学认真精神
可能你的意思是后者,但是前者更重要,就不应该起这个想法。