推 htl74421:感謝大大,我懂了...<(_ _)> 07/12 15:53
※ 引述《htl74421 (<><魚仔<>< 薰~)》之銘言:
: 感謝回答 ^^
: 目前我碰到的情況是原程式只下了一句 parent:get_data() ,然後我往上找了四代才找
: 到 get_data() 在哪裡, 原本我以為只是到上一代去找而已...
: 這樣我就想到這中間如果有人不曉得底下有人去找原來的 get_data() 而又創了一個
: 那到了最下面的人不就慘了?
: 所以說是不是要修正寫法改指定是哪一代的 get_data() 這樣比較保險?
: 謝謝 ^^"
這不對。
任何要引用繼承你提供的類別的人。
他所遵照的就是你做為繼承類別的功能。
而不應該去做往上找的動作。
在你未做任何說明的情形下,最終繼承就是以你為準。
另外,任何人在設計繼承時。
他允許你繼承後修改方法的內容。
但不應當允許任何人去修改被繼承體的內容。
舉例來說
a的get_data()有缺失。
你要做的不是去修改a的get_data()
而是繼承a的b去修改get_data()的內容。
然後讓原本繼承a的c,改繼承b。
除了原設計者之外都不應該隨便任意修改任何被繼承體。
另一種情形就是說。
c、d、e繼承了a功能正常
但是f、g發現了a的功能性不足
你要做的不是去改a
而是讓b繼承a之後,由f、g再去繼承b,並修改b做為你要的功能。
這樣子c、d、e就不會因為你改到b而發生不可預期的異常。
a ←c、d、e
↑
b ←f、g
完全偷懶到不行的UML圖
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.42.153