編程時,我們通常使用一些類型鑄造操作。有關OOP中「鑄造操作」的問題
當鑄件發生在「同一層」的物體上時,感覺沒問題。但是當它出現在「不同層次」的主體(主要是父子之間)時,感覺很奇怪。
考慮到這一點:
Class Son extends Father
當Son s = (Son)father;
,這是絕對不合理的。因爲「兒子」不再是「父親」了,「兒子」可能會伴隨着「父親」所沒有的一些新屬性而長大,鑄造操作使得這些屬性不爲人知。
在另一方面,Father f = (Father)son
似乎是合理的,但根據LSP
「衍生的一個實例應該能夠取代它的超類的任何實例」
A「兒子」可以做他的「父親」所能做的任何事情,所以鑄造操作似乎毫無用處。
所以我可以說這些鑄造操作是惡性的OO設計原則,但必要的?
我想我們有同樣的想法:)我只是忘了性別,愚蠢的性別:P – 2010-05-28 05:30:01