对于这些类要注重的第一件事就是,两种具体类都包含 Object 类型的 value 字段。假如您决定稍后让树包含,比如说,Interger,您也许会忘记更新其中的一个字段声明。假如程序的其它部分需要这些字段是 Interger 的话,程序就很可能不会编译。您或许记得您改变了其中一个类的 value 字段的类型,却忽略了一个事实,就是您没有在其它类中作相应的改变。
一些预防措施
当然,这个示例所示的错误是编程新手可以很快学会通过分解出公共代码来避免的。在本例中,字段声明应该移到 Tree 类中。它的两个子类就会继续这个字段,而且对字段声明的任何改变都只需要在一个地方出现。
继续看这个示例,我们可能还会编写在一个 Tree 中相加和相乘所有节点的方法。为了简单起见,我将以递归的方式来编写这些方法。