`
yxsylyh
  • 浏览: 31960 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

树类模块制作心得

 
阅读更多

开始设计的时候,总把树类和树结点类混淆,本来各个树类之间应该有继承关系,而我把结点类也来个继承。而结点类是自引用的(自反的,我这样叫),结点的一个实例要引用结点的另一些实例的集合,那么一旦由结点类A扩展出结点类B的时候,B是无法通过显示转换的方式转换为A结点的,于是这就与树类的继承相矛盾了。

 

这个问题想了N个月,没想明白。曾经放弃过,最近要做另一个模块,其中需要树类结构,所以又回来考虑,最后终于想明白了,就是上面所说的原因。树结点并不需要继承,只需要在各个继承的树类之间都是用相同的结点类就可以了(二叉树好象需要除外),只要结点不需要提供新的属性,就不派生,从而保持树类间方法的更大兼容性。

 

二叉树结点由于扩展了树结点,需要用左孩子和右孩子的形式,所以二叉树就无法继承N叉树了(也就是无法继承树类)。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics