编程时,我们通常使用一些类型铸造操作。有关OOP中“铸造操作”的问题
当铸件发生在“同一层”的物体上时,感觉没问题。但是当它出现在“不同层次”的主体(主要是父子之间)时,感觉很奇怪。
考虑到这一点:
Class Son extends Father
当Son s = (Son)father;
,这是绝对不合理的。因为“儿子”不再是“父亲”了,“儿子”可能会伴随着“父亲”所没有的一些新属性而长大,铸造操作使得这些属性不为人知。
在另一方面,Father f = (Father)son
似乎是合理的,但根据LSP
“衍生的一个实例应该能够取代它的超类的任何实例”
A“儿子”可以做他的“父亲”所能做的任何事情,所以铸造操作似乎毫无用处。
所以我可以说这些铸造操作是恶性的OO设计原则,但必要的?
我想我们有同样的想法:)我只是忘了性别,愚蠢的性别:P – 2010-05-28 05:30:01