java中怎样做可以把父类强制转换成子类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中怎样做可以把父类强制转换成子类相关的知识,希望对你有一定的参考价值。

不能,子类有父类的方法和熟悉,但是子类也有自己的方法和熟性,当你转成子类的时候使用子类的方法和属性时会出异常,所以是不能转的
除非你本身是子类的对象,被转成父类的类型了,可以通过强制转换转成子类对象
参考技术A ChildClass childObject = (ChildClass)parentObject;

java父类强制转换成子类的问题

如下代码 把Obj子类强制转换成Object超类会产生异常,而不会继续执行son = (Obj)father;下面的语句
public class Obj
public int i = 100;
public static void main(String[] args)

try
Obj son = null;
Object father = new Object();
son = (Obj)father;
System.out.println(son.i);
catch(Exception e)



但是为什么j2me里
ServerSocketConnection ssc = (ServerSocketConnection)Connector.open("socket://:9999");
Connector.open("socket://:9999");返回的是一个Connection类型的 却可以强制转换成其子接口ServerSocketConnection类型的呢?

父是不能强转成子的,类和接口都一样,而且方法的返回实际上是返回的是类的对象,而不是返回接口。
你所看到的方法返回的是接口,实际上是方法返回了实现了该接口的类的对象。
拿你的Connector.open()方法来说,这个方法返回的类的对象可能既实现了Connection接口,也实现了ServerSocketConnection接口。但是Connector.open()方法在定义的时候被定义为返回Connection接口,但实际返回的类的对象同时也实现了ServerSocketConnection接口,所以Connector.open()虽然返回的是Connection接口,但却能被强转为ServerSocketConnection。
回答得很辛苦,请楼主给分。
参考技术A 多态问题。
Object father = new Obj();
son = (Obj)father;
父类的引用可以指向子类。你的写法是无法强转的。
参考技术B 父类不能转成子类。 参考技术C Connection类比较特别 参考技术D 这个问题不错,顶。

以上是关于java中怎样做可以把父类强制转换成子类的主要内容,如果未能解决你的问题,请参考以下文章

java中多态的要点

java 里 可以把一个父类强制转换成一个子类 不能把一个子类强制转换成一个父类? 对吗?

引用类型的强制类型转换

java中的强制类型转换

java父类强制转换成子类的问题

第九天