A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于连林 中级黑马   /  2012-10-25 23:16  /  2402 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天发现String 是用final修饰的,不能被继承的

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

3 个回复

倒序浏览
呵呵 ,是呀 !因为Sting是这样定义的:public final class String extends Object,里边有final关键字,所以不能被继承。class A{public void m(){}} class B extends A{ public void m(){}},如上面的例子在子类中再父类中的方法,就是重写。
回复 使用道具 举报
String是final类型的,意味着其类不能被继承,方法不能被重写,这样才能更通用!
String是作为基本数据类型设计的,就像int什么的一样,所以不能继承
而且是传值的而不是传引用
如果可以继承,在处理传值传引用问题和副本构造等问题的时候就会造成不必要的麻烦。
比方String是传值的,你构造了一个类,是String的子类,按道理用户自定义类都是传引用的,但是你的父类确是传值,矛盾
回复 使用道具 举报
对,你说的很对,String类不能被继承,原因就在于String这个类型前有final修饰,根据final的性质:final修饰的类不能被继承,所以导致了String类不能被继承
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马