作者TonyQ (沉默是金)
看板java
标题Re: [问题] 还是不太懂多型
时间Sun Oct 26 13:04:34 2008
※ 引述《s66449 (闲泡菜)》之铭言:
: 推 qrtt1:不太懂,又用不到就先跳过吧。 10/25 21:42
: 推 yyc1217:假设你现在要写一个动物园 你有Animal类别跟许多继承於 10/25 22:38
: → yyc1217:Animal的其他动物类别(假设有Dog及Cat) 10/25 22:40
: → yyc1217:现在你不知道程式传进来的是dog还是cat 10/25 22:42
: 推 liyard:看到中文命名我头好痛orz 10/25 22:45
: 推 yyc1217:所以你会宣告一个Animal参数 用来指向任一个传进来的物件 10/25 22:45
: → yyc1217:但你不能宣告cat或dog参数 因为他们彼此不能通过"IS-A" 10/25 22:47
: 推 yyc1217:这就是多型的好处 用来处理不知道会传进什麽物件的情况下 10/25 22:49
: → yyc1217:但你知道传进来的都是"Animal" 就可以这样写 10/25 22:51
: 推 qrtt1:以父类别宣告然後以子类别的建构子new <-- 请搜寻 10/25 23:50
: 推 TsaiCF:多年前我是看侯俊杰老师的多型与虚拟开始对oop有入门感觉的 10/26 01:51
: 推 TsaiCF:(虽然那本是c++).另外要看应用面,可以找design pattern来看 10/26 01:54
: → s66449:yyc1217~请问程式是自己写的,为什麽会不知道传入的是dog 10/26 09:59
: → s66449:还是cat? 10/26 10:01
举个例子 , 如果你要比较 Dog跟Cat Tiger 这三个继承Animal的成员
要比较 Dog 跟 Cat
那你就要写 public void compare(Dog d, Cat c);
如果你要比较 Cat跟 Tiger
那你就要写 public void compare(Tiger t, Cat c);
有多少动物你就要按照组合写多少次
那还不如底下一次来得省事
public void compare(Animal a,Animal b);
: 推 kasase:假设你的function是比较两只传入动物的年纪 10/26 12:26
--
What do you want to have ? / What do you have?
从书本中,你可以发现我的各种兴趣。
从CD中,你可以了解我所喜欢的偶像明星。
或许从文字你很难以了解一个人,但从物品可以。
My PPolis , My past. http://ppolis.tw/user/Tony
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 221.169.78.140
1F:→ TonyQ:当然多型的用途不只如此.:p 10/26 13:05
2F:推 goodblessu: 很清楚的例子! 02/29 14:17