标题:[讨论]令人不解的向下转型
取消只看楼主
弑神饕餮
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2007-6-6
 问题点数:0 回复次数:4 
[讨论]令人不解的向下转型
估计是编译器不够聪明

class A{
void a(){
System.out.println("a()");
}
}

class B extends A{
void b(){
System.out.println("b()");
}
}

public class C {
public static void main (String[] args) {
A[] test={
new A(),
new B()
};

//test[0].b();这个大家都能理解
//test[1].b();奇怪就奇怪在这,我觉得应该可以,可是编译器不让我这么做,我看它还不够聪明
try{
((B)test[0]).b();//类型不匹配不允许向下转型
}catch(java.lang.ClassCastException e){
System.out.println("can't cast");
}
((B)test[1]).b();//传说中的向下转型
}
}

搜索更多相关主题的帖子: 令人不解 void class 
2007-08-01 17:19
弑神饕餮
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2007-6-6
得分:0 

哦啊 谢谢两位啊
还是编译器不够聪明 嘿嘿~~~


爱情如潮水般滚滚迩来,总有一天滚滚滚回去!!天长地久惟有java!
2007-08-01 17:46
弑神饕餮
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2007-6-6
得分:0 

我晕 我就不一个一个回了 下面我一起说

1
//test[0].b();这个大家都能理解
2 //test[1].b();奇怪就奇怪在这,我觉得应该可以,可是编译器不让我这么做,我看它还不够聪明
3 try{
4 ((B)test[0]).b();//类型不匹配不允许向下转型
5 }catch(java.lang.ClassCastException e){
6 System.out.println("can't cast");
7 }
8 ((B)test[1]).b();//传说中的向下转型
9 }
10}

很多人不理解我第1行的做法,我真晕了,我也知道A里没这个方法,所以我都把他注释掉了嘛,而且后面跟一句大家都能理解,我真晕,结果大家都不理解。。。我就是随便这么一写这个代码,为了突出第2行我模糊的地方。。。

还有LS啊,你仔细看一下第4行,我是把A转型为B,不是把A转成A。。。


爱情如潮水般滚滚迩来,总有一天滚滚滚回去!!天长地久惟有java!
2007-08-02 08:40
弑神饕餮
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2007-6-6
得分:0 
千里大哥说的我明白,我在这讲向下转型,你咋给我说起向上转型来了。。。



好了好了,谢谢各位的帮忙啦~~~~这个帖子结贴了啊,都表回了。。。再回还指不定扯哪去了。。。

爱情如潮水般滚滚迩来,总有一天滚滚滚回去!!天长地久惟有java!
2007-08-02 11:06
弑神饕餮
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2007-6-6
得分:0 
回复:(千里冰封) 2 //test[1].b();奇怪就奇怪在这...
哦 明白了~~~~~~~

爱情如潮水般滚滚迩来,总有一天滚滚滚回去!!天长地久惟有java!
2007-08-02 18:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-159708-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.073446 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved