1。各位前辈我看了很多关于JAVA上溯和下塑转型的内容,但是还是不怎么懂,主要是不懂在实际应用当面在什么时候要用到JAVA上溯和下塑转型,用了有什么作用,谢谢前辈们不怕辛苦的敲字回答。
2。帮我看看下面的下塑转型 hh.b=222;怎么会不能赋值啊。真是搞不清楚拉。
class One{
int b;
}
public class Two extends One{
public static void main(String[] args){
One h =new One();
try{
Two hh = (Two)h;}
catch(ClassCastException e){}
h.b=111;
hh.b=222;
System.out.println(h.b+""+hh.b); }
}
2。帮我看看下面的下塑转型 hh.b=222;怎么会不能赋值啊。真是搞不清楚拉。
class One{
int b;
}
public class Two extends One{
public static void main(String[] args){
One h =new One();
try{
Two hh = (Two)h;}
catch(ClassCastException e){}
h.b=111;
hh.b=222;
System.out.println(h.b+""+hh.b); }
}
解决方案 »
- 急!我的java界面显数据库信息时addElement(E) 的调用未经检查(在线等!)
- 关于取Oracle sequence的怪问题,急。。。
- eclipse中的第一次sliverlight插件(eclipse4sl)
- 关于麻将排列问题
- 救命啊,牛顿插值问题.看看算法错哪了:
- Java事件处理书籍下载
- EXCEL导入时,判断是否有重复数据,并显示哪2行重复.
- 在java里是怎么实现一个方法返回多个参数的?
- java可以对一张很大的图片文件如aaa.jpg(1230K)操作后,缩小文件
- java中的window frame panel三者是什么关系.求教
- 如何让一个Calendar对象的“日”加两天或减两天。
- 关于类型转换的问题
而且hh.b=222;这一句里的hh好象不能识别,hh为局部变量看不见的。
举个例子
向上转型:
人 路人甲=new 男人(); //男人当然是人,所以没问题;
向下转型:
女人 路人乙=(女人)new 人(); //这个人不一定是女人,强转当然有问题
2
编译错误: 作用域问题,hh应该声明在try外
Two hh=null
try{
hh = (Two)h;
}
运行错误: 由于向下转型异常,hh=null, 再 hh.b=222;会空指针异常
我加两句
中国有句古话是“青出于蓝而胜于蓝”,到这里就是,如果父类对象可以胜任的工作,那子类对象也一定可以胜任,但,反过来就不一定了。如果说子类可以做的事情父类也可以做的话,那父类就不用子类了,要是子类不如父类的话,那恐怕九斤老太又要说“一代不如一代”了,呵呵。