| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 531 人关注过本帖
标题:[讨论]多态问题
只看楼主 加入收藏
vs007
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-11-17
收藏
 问题点数:0 回复次数:5 
[讨论]多态问题
class A
{
String s="class A";
void show()
{
System.out.println("A1");
}

}
class B extends A
{
String s="class B";
//String s1="class B1";
void show()
{
System.out.println("B1");
}
}
class TypeConvert
{

public static void main(String args[])
{
B b1,b2=new B();
A a1,a2;
a1=(A)b2;
a2=b2;
System.out.println(a1.s);
System.out.println(a2.s);
a1.show();
b1=(B)a1;
//System.out.println(b1.s1);
System.out.println(b2.s);
System.out.println(b2.s);
b1.show();
}
}
结果:
class A
class A
A1
A1
class B
class B
B1
B1


为什么回有如此结果?
讨论.....

搜索更多相关主题的帖子: 多态 
2007-07-10 21:26
raino0
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-7-10
收藏
得分:0 
照你的代码输出跟你的结果不一样

结果为:
class A
class A
B1
class B
class B
B1
2007-07-10 22:37
huwangvs
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:764
专家分:0
注 册:2007-2-4
收藏
得分:0 

多态只作用于方法,而不会作用于数据成员。当要访问一个类对象的数据成员时,变量类型总是决定该数据成员所属的类。所以调用a1.s,a2.s时都是打印class A。调用b1.s,b2.s时候总是打印class B.
当调用a1.show()的时候,因为a1引用的是 类B的对象,此时是多态,所以打印出B1
对于b1,因为a1引用的就是类B的对象,b1=(B)a1相当于将 类B的对象还原了,b1.show()就调用了类B中的show方法,打印出B1
/*b1=(B)a1不知道怎么说,自己理解理解吧,就这个意思。
有不妥的地方请指正*/

2007-07-11 14:15
antiantixy
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-7-10
收藏
得分:0 

对对

[此贴子已经被作者于2007-8-1 20:09:56编辑过]


2007-07-11 22:29
木木788
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-4-5
收藏
得分:0 
  huwangvs 说的那样了  
2007-07-11 23:36
vs007
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-11-17
收藏
得分:0 

Thank U


Java ,My love and think......
2007-07-15 16:10
快速回复:[讨论]多态问题
数据加载中...
 
   



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

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