| 今天看CORE JAVA发现他说超类可以强制转换为子类,觉得实在不行,请问有这样的可能吗? |
| [ 来源:ITWENKU 时间:2006-9-7 13:40:06 | 浏览:237人次
] |
| |
|
今天看CORE JAVA发现他说超类可以强制转换为子类,觉得实在不行,请问有这样的可能吗? 如果可以 请问怎么转换 ???
多态
Object obj = new Object("Hello") ;
String s = (String) obj;
sorry
Object obj = "hello" ;
......
......
String s = (String) obj;
可以,强制转换 class B extend A
A a = new A() ((B)a) 不过这么转换可能会出问题,还是用接口好一点
这样的情况我试过但是不行 会有java.lang.ClassCastException
我强制转化都会产声异常
可以,强制转换 class B extend A
A a = new A() ((B)a) 不过这么转换可能会出问题,还是用接口好一点 ========================================== 这样不是可能,是肯定会出现问题,会有造型异常
正确的应该是
A a = new B(); a.someMethodOfA(); ((B)a).someMethodOfB();
是的 要先给aaa一个ChildClass的指向
一般都是为了面向接口, Interface IA{}; class A implements IA{}; class B implements IA{}; IA ooA = new A(); IA ooB = new B(); 当然向下转型的时候,ooA只能转成A,ooB只能转成B,即它原来是什么型,转回什么型,否则throw ClassCaseException
可以牵制转换,但是你要清楚强制转后有些麻烦,因为子类的某些方法和属性父类是没有的,但是当你转换成子类以后,无法完成子类的某些功能。
//超类可以强制转换为子类 这是下塑造型,要求类本身确实是想要变幻的类型,否则异常。
可以转换的,也就是所谓的下塑造型.
为什么不可以?
这样做的时候,实际生成的还是子类的实例。
向下转型容易出错。. 向上转型要好些..
A a = new B(); a.someMethodOfA(); ((B)a).someMethodOfB();我同意这个说法.
|
|
 |
推荐文章 |
|