在 Java 中,String 不能被继承。
原因很简单:
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
String 类被声明为 final,而 final 类不能被其他类继承。
主要出于以下几点考虑:
安全性
不可变性与线程安全
final 保证了它不会被子类改变行为,维持不可变特性。性能优化
下面这段代码是编译不过的:
class MyString extends String { // ❌ 编译错误
}
编译器会报错:
Cannot inherit from final ‘java.lang.String’
常见做法有:
class MyString {
private String value;
public MyString(String value) {
this.value = value;
}
public int length() {
return value.length();
}
}
public class StringUtils {
public static boolean isEmpty(String s) {
return s == null || s.isEmpty();
}
}
interface Text {
String getText();
}
final如果你愿意,我也可以讲讲 String 的不可变性原理 或 String 常量池机制。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。