标题:java中的多态性 是怎么体现的呢?
只看楼主
shaoxuecheng
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2006-1-15
 问题点数:0 回复次数:4 
java中的多态性 是怎么体现的呢?
java中的多态性 是怎么体现的呢?
搜索更多相关主题的帖子: java中 多态性 
2006-05-24 13:59
iyuohz
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-2-22
得分:0 
关于多态,我是这么理解的
1个行为,不同的对象,他们具体体现出来的方式不一样,
比如:方法重载 overloading 以及 方法重写(覆盖)override
class Human{
void run(){输出 人在跑}
}
class Man extends Human{
void run(){输出 男人在跑}
}
这个时候,同是跑,不同的对象,不一样(这个是方法覆盖的例子)
class Test{
void out(String str){输出 str}
void out(int i){输出 i}
}
这个例子是方法重载,方法名相同,参数表不同

ok,明白了这些还不够,还用人在跑举例
Human ahuman=new Man();
这样我等于实例化了一个Man的对象,并声明了一个Human的引用,让它去指向Man这个对象
意思是说,把 Man这个对象当 Human看了.

比如去动物园,你看见了一个动物,不知道它是什么,"这是什么动物?""这是大熊猫!"
这2句话,就是最好的证明,因为不知道它是大熊猫,但知道它的父类是动物,所以,
这个大熊猫对象,你把它当成其父类 动物看,这样子合情合理.

这种方式下要注意 new Man();的确实例化了Man对象,所以 ahuman.run()这个方法 输出的是 "男人在跑"

如果在子类 Man下你 写了一些它独有的方法 比如 eat(),而Human没有这个方法,

在调用eat方法时,一定要注意 强制类型转换 ((Man)ahuman).eat(),这样才可以...

对接口来说,情况是类似的...




[此贴子已经被作者于2006-5-24 14:30:03编辑过]


2006-05-24 14:29
shaoxuecheng
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2006-1-15
得分:0 
但是我记得c++中的多态概念是这样的
比如说两个一样名称的函数();
第一个参数是short类型
第二个参数是int类型
因为short可以转换成int
所以在给出一个参数是short时 就不知道调用哪个方法

并且c++用的是虚函数来实现多态的
那么java就是想你说的那样来实现多态的?通过引用?

2006-05-24 14:47
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
在JAVA中通过对象实际指向的引用来实现多态的

可惜不是你,陪我到最后
2006-05-24 15:25
zhouxin
Rank: 2
等 级:新手上路
威 望:4
帖 子:76
专家分:0
注 册:2006-4-28
得分:0 
应该就是重载吧!

好好编程好好学习
2006-05-24 17:02



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




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

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