java中的String类型的对象为什么可以自动转换成Object类型的?而Object却要强制转换成String类型的 5
比如
String a = "hello";
Object b = a;
这样可以直接用,而
Object a = "hello";
String b = (String)a;
需要在a前面加String才能通过编译。
String类不是Object类的子类么,那么String应该继承Object类了,那为什么父类的变量可以直接用子类的对象,而子类不能直接用父类的?
收起
推荐于2016-11-05 14:24:50
最佳答案
String b = (String)a; 这样叫向下转型,需要精确指定类型。
可以这样理解 假设a是人(Ojbect) b是孩子(String), String b = a; 这句话可以理解为人是孩子,这样不太对,是吧? 因为人可能不是孩子,所以精确一下 加上个修饰(String 可以理解成定语)变成String b = (String)a; 这样就能保证实例化的是一个孩子对象(String b)
其他回答
首先你要了解什么叫父类和子类,Object是所有类的父类,它和String的关系就好比:球和篮球的关系。球这个类是所有球的父类,篮球和足球。。。都是它的子类。
FootBall fb = new FootBall();
Ball a = fb;(你可以说足球是球)
但是
Ball b = new BasketBall();
FootBall f = b;(这里说球是足球就不行了)
子类是继承父类的,那么子类可能有自己独特的一些方法和属性是父类没有的
而所有父类的公开(public)方法都会被子类所拥有。
简单说,子类可以调用所有父类的public(protected因为外部无法访问,这里不提)方法,而父类却不能调用子类独特的方法,所以,子类可以直接转换为父类,而父类是无法转换为子类的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)