这个问题是关于任何静态类型语言的OOP。假设我有两个类,它们的实例维护着彼此的指针/引用。在我的情况下,一个类是一个容器,另一个类是一个包含对象的包装器,它包含一个指向它所在容器的指针。从链接类继承
class Container {
Element[] elements;
}
class Element {
// ... data...
Container holds_me;
}
的Container
构造器创建一个对象Element
给每条包含的对象,并设置其holds_me
指针本身。
现在我想从这些类继承。我想要一个DerivedContainer
类,它从Container
继承和包含DerivedElement
对象,其中从Element
DerivedElement
继承,是指含DerivedContainer
对象。什么是正确的方式来做到这一点(或者是错误的做法)?
最简单的事情是为DerivedContainer
的构造函数来创建DerivedElement
S和它们存储在elements
及其holds_me
指针设置为自身。随后的Container
和Element
所有的方法都可以工作,但在DerivedContainer
和DerivedElement
定义的任何新的方法将不得不垂头丧气,以调用未在基类定义它们的任何新方法elements
和holds_me
举行的对象。这看起来不太漂亮;所以我想知道,有没有更好的解决方案?
只是一个建议 - 您使用双链接的连接可能最终成为问题。如果你的容器类有一个静态查找方法“findContaienrWith(object)”,它可能会减少你稍后会遇到的一些复杂性。此外,该方法可以在您添加需求时重新实现(例如,您需要两个容器容纳相同对象或类似令人讨厌的情况)。 – 2011-06-01 21:48:21