作者fragileness (刚勇镇西一)
看板C_and_CPP
标题Re: [问题] 多型的需要???
时间Thu Oct 15 23:42:08 2009
※ 引述《conan77420 (小马非马)》之铭言:
: example2
: 所有的乐器都继承了乐器,你希望所有的乐器都demo/play一次
: 你可以使用`乐器`的play来呼叫所有乐器的play
: 最近在看多型,经过爬文後自己大概有个结论可是不知道对不对
: 我想确定的是,多型是为了多个物件重复执行相同动作而诞生的概念
: 就像例子二,所有乐器都要play所以使用`乐器`的play来呼叫所有乐器的play
: 所以也就是说,不能选择只play某部份的乐器,
: 多型的概念在於,继承後的物件,都一定要执行此动作罗?
: 假设,小提琴有继承〝乐器〞,鼓没有继承〝乐器〞,所以要拨放的只有小提琴
: 相反的如果两个都有继承〝乐器〞,当〝乐器〞的play()被执行时,两个都要拨放罗?
你这样讲好像是在说
「执行一次 〝乐器〞的play(),小提琴和鼓都会被play」
感觉像是你把类别和实体搞混了
类别:乐器
子类别:小提琴(继承乐器)、鼓(继承乐器)
实体:我的小提琴、我的鼓
一般来说应该只有实体能够被播放吧
所以发生的事情应该是
我把 我的小提琴 当作 乐器 来呼叫〝乐器〞的play()
此时我的琴的琴弦被摩擦了(小提琴的play)
我把 我的鼓 当作 乐器 来呼叫〝乐器〞的play()
此时我的鼓的鼓皮震动了(鼓的play)
好处是,我可以不用知道这两个东西实际上到底是小提琴还是鼓
我只要知道他们都是乐器,对他们分别呼叫〝乐器〞的play()就可以了
如果不是这样的话,我就非得先判别他们到底是什麽不可
如果鼓没有继承乐器呢?那麽你无法对 我的鼓 呼叫〝乐器〞的play()...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.192.17.6