Java中的多态到底有什么实际开发作用啊

chenyuch 2012-05-20 02:46:21
大家好,我是一个菜鸟,在我眼里多态就是父类的引用可以指向子类的对象,其余的 功能就都和 继承 一样了,
这道低有什么作用了 倒不如 直接有继承或直接有多态二者选一个就够了,真是搞的人糊涂啊, 在网让找的资料 ,
都是用男人和女人在举例子, 在这里高手们能不能用实际的代码为我举个实际点的例子了 谢谢打家了 这个问题一直纠结这我 望大家能帮我解决一下
...全文
2653 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
未来纪元 2012-05-25
  • 打赏
  • 举报
回复
工厂模式
BaronZ 2012-05-25
  • 打赏
  • 举报
回复
是的,你现在还体会不到,到你用框架了,可以面向接口编程。解耦很好
huanghun4673 2012-05-24
  • 打赏
  • 举报
回复
多态的主要表现就是方法的重写和方法的重载。方法重写是父子之间,方法重载则是对自身而言。希望对楼主有用!
dracularking 2012-05-24
  • 打赏
  • 举报
回复
大家都说很好啊,我试图从抽象角度说一点吧

多态(polymorphism)是以一种看待事物更细致的角度来描述事物(或者说以抓住了这种特质的独具慧眼的角度),事物多具有本质(共性),也有各种不同的变化形态(比如碳元素会有金刚石和石墨两种形态),各形态都有其独特作用,但是万变不离其宗,它们以共性相联,是基于这种独特而深刻的认识。

当要利用这种物体的各个形态时,有形态变化的物体,使用起来更灵活。比如你事先预估到自己要用到人形机器人来让他干精细活,和交通工具来代步。这时候如果你想到的是变形金刚,可能对于你今后的使用要方便很多,一物重用且随时随地切换,使用灵活,当然代价是初始的设计比较麻烦。但如果你没想到要用变形金刚这种多态的工具,而是分别想到的人形机器人和汽车,也未尝不可,只不过使用起来要麻烦得多,切换也不灵活。
zqfddqr 2012-05-24
  • 打赏
  • 举报
回复
这个东西得实际去编程体会,靠别人教是教不出感觉的.多写写代码就好了
superhill 2012-05-24
  • 打赏
  • 举报
回复
再贴一个我自己以前写的笔记吧

http://blog.csdn.net/superhill/article/details/7526627

希望能帮助你理解
zzlovelyboy 2012-05-24
  • 打赏
  • 举报
回复
等你用框架的时候,你就知道为什么需要用这个多态 ,你用那个数据库连接驱动的时候,他就是多态的体现。。。
lost_guy_in_scut 2012-05-23
  • 打赏
  • 举报
回复
你首先要明白你所说的‘父类的引用可以指向子类的对象‘ 有什么好处。
好处就是可以解耦合,比如你需要一个List类,你可以这样实例化ArrayList list = new ArrayList();
也可以List list = new ArrayList();
那么现在的问题来了 现在的需求是ArrayList已经无法满足你的要求了,你需要换成LinkedList,如果按照第一种写法那么你需要做的工作可能比较多了,除了修改list的类型,还要考虑的是你换成LinkedList的时候,你之前用ArrayList所调用的方法LinkedList是没有的,这倒也及加多了你的工作量。
如果你按第二种方式来实现,那么你只需将List list = new LinkedList()即可,你无须在担心之前所调用的方法
。 当然现在更好的做法,是把List list;通过spring来修改的,这样的话就完全不需要改变代码了,也就符合设计原则的几大思想了。楼主在认真想想,应该就能理解的了。
当然多态并不只有你这种情况哦,同样的方法名,参数不同也为多态。。
liuhanfeng123 2012-05-22
  • 打赏
  • 举报
回复
其实刚开始只是你没有分清楚他们之间的区别,才会有这样的问题;建议多写几个类,多考虑自己写的代码的重用性


4楼举的类很实用
莫欺少年穷 2012-05-22
  • 打赏
  • 举报
回复
简单说,就是父类定义通用的属性、方法,多个子类实现可以省去这些公用的代码,省力一大笔!而且,将来如果对这些通用的属性、方法有何更改,只需改父类即可,维护起来就是比较方便、快捷、准确!可以想象1W个子类维护这些通用的方法的困难度及工作量!
找工作中 2012-05-20
  • 打赏
  • 举报
回复
就象一样东西有几种形态,在设计时有时候不管什么形态;有时候我知道鱼能游泳就行了,而不管是鲫鱼还是鲤鱼,那是DNA去负责的问题了...
流星陨落 2012-05-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

举个例子吧

class Car{
void run(){
...
}
}

class BMW extends Car{}
class Benz extends Car{}

实现的时候

Car car = new BMW();
car.run();

将来你开着觉得难受,直接将new BMW()换成 new Benz()就可以了,完全不影响……
[/Quote]
++
superhill 2012-05-20
  • 打赏
  • 举报
回复
举个例子吧

class Car{
void run(){
...
}
}

class BMW extends Car{}
class Benz extends Car{}

实现的时候

Car car = new BMW();
car.run();

将来你开着觉得难受,直接将new BMW()换成 new Benz()就可以了,完全不影响别的代码。


如1楼所说,这个在框架设计上更是大有所为

superhill 2012-05-20
  • 打赏
  • 举报
回复
可以增强代码的健壮性,只管按照父类的设计进行操作,不管具体是什么样的子类,将来这个子类用着不舒服了,换一个就行,不影响原来的代码,这样代码维护起来就更加容易
huangxiaofei 2012-05-20
  • 打赏
  • 举报
回复
给你举一个最简单的例子吧,假设你要设计一个通用框架,这个框架会涉及到数据库的操作,但是你不能限定用户用哪个数据库,这个时候你就可以用到多态。
你可以设计一个接口:DataBaseDao
然后,每个不同的数据库,你可以编写接口的实现类,比如:SQLServerDao, MySqlDao, DB2Dao等等

当用户使用你框架的时候,他就可以用多态,实现自己的数据库连接功能:
DaoBaseDao dao = new SQLServerDao(); //针对SQLServer的接口实现,这里dao就是多态
dao.connect();

大概就是这样
huangxiaofei 2012-05-20
  • 打赏
  • 举报
回复
如果你设计通用框架的话,多态在设计构架上会非常有用处的。建议去看看框架的源代码。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧