的BinaryTreeNode从GraphNode的讨论出现在这里:是推导违反里氏的换人Princple
Changing visibility of method in inherited class
的问题是:真的是“BTNode扩展GraphNode”设计违反了里氏的替代Princeple的?作为一个“类似”的例子,它显示的情况: Is deriving square from rectangle a violation of Liskov's Substitution Principle?
但我真的不明白为什么这是相似的。我很新设计,有人可以解释我为什么(如果)是这种情况?
的任何子类动作X是否儿童限制数量也不会解决这个问题?它可以通过以下两种方式之一完成:向GraphNode添加numberOfChildrenRestricion标志(显示特定graphNode可能有多少个子项),或者通过在BTNode中重写addChild,以便它不允许添加多于两个子项(并且,例如,抛出异常)? – Malvinka
如果我决定不从GraphNode派生BTNode,它意味着基本上将整个代码(但是addChild方法)从一个类重写到另一个类 - 这似乎并不合理...... – Malvinka
@Malvinka不,“BTNode”特别具有一个孩子在左边,一个在右边。 addChild'将添加一个孩子到哪个方面是不明确的。 – Sweeper