当前位置: 技术问答>java相关
类强制转换问题
来源: 互联网 发布时间:2017-03-31
本文导语: 子类可以强制转换为父类,父类强制转换为字类会不会有问题? | 非常有意义 而且肯定可以,这叫"下矫正" 下矫正的前题是你定义的类型被赋予的对象是子类的对象!!!! 比如我们使用Vector的...
子类可以强制转换为父类,父类强制转换为字类会不会有问题?
|
非常有意义
而且肯定可以,这叫"下矫正"
下矫正的前题是你定义的类型被赋予的对象是子类的对象!!!!
比如我们使用Vector的时候可以放任何对象进去,取出来时都是Object类型的
这时我们就要用到"下矫正"来转换到我们需要的对象类型,我们都知道任何类都是继承Object的.
还有很多实用的东西,比如"跌代器"、"HashTable"使用的时候也许要用到这个
如果本身就是父类对象那下矫正就没有意义了
而且肯定可以,这叫"下矫正"
下矫正的前题是你定义的类型被赋予的对象是子类的对象!!!!
比如我们使用Vector的时候可以放任何对象进去,取出来时都是Object类型的
这时我们就要用到"下矫正"来转换到我们需要的对象类型,我们都知道任何类都是继承Object的.
还有很多实用的东西,比如"跌代器"、"HashTable"使用的时候也许要用到这个
如果本身就是父类对象那下矫正就没有意义了
|
那样做没有意义,因为强行转圜后,不能使用子类的 方法。
|
子类就算是不转化成父类,还是用的子类的方法啊,而父类转化成子类的话,因为父类里可能没有子类的某些方法,当然不行啊。
|
现判断一下是不是属于子类的类型,如:
if (parentObject instanceof ChildClass) {}
可能parentObject是经过“上塑“(比如从Vector里拿到的Object),所以如果确定parentObject是ChildClass类型的,那就用不着做类型检测了;否则,还是先做一下类型检测。
if (parentObject instanceof ChildClass) {}
可能parentObject是经过“上塑“(比如从Vector里拿到的Object),所以如果确定parentObject是ChildClass类型的,那就用不着做类型检测了;否则,还是先做一下类型检测。
|
父类强制转换为字类没有问题,但是你要考虑到父类中没有的方法在你引用是会出现问题,你应当要避免这个问题。
|
同意super_zzw(之支吾)的看法,一般情况下只有该对象正是子类对象的时候才会进行这种转换
|
下溯造型,必须知道该对象是其子类的实例
Vector vec = new Vector();
String str = "a";
vec.add(str); //str上溯造型成Object
String newStr = (String)vec.elementAt(i);//下溯造型成String
Vector vec = new Vector();
String str = "a";
vec.add(str); //str上溯造型成Object
String newStr = (String)vec.elementAt(i);//下溯造型成String
|
不会有问题,但没有什么意义!
|
只是知道怎么用,没想到还有这么多“概念”