假设我们有oneInstance
和secondInstance
,其中之一SomeClass
和 1OtherClass
具有下面的示例类层次结构:
oneInstance
Object
- SomeClass (some variables of it's own, nothing major)
secondInstance
Object
- SomethingClass
- OtherClass (just about any class in the tree here)
是否有可能在运行时更改 oneInstance 以使其“超级”消息发送到 secondInstance。
oneInstance 和 secondInstance合并本质上使 oneInstance 就像它们是一个对象一样工作,并且结构看起来好像它们是从以下内容实例化的:
secondInstance wraps around oneInstance
Object
- SomethingClass
- OtherClass (just about any class in the tree here)
- SomeClass (some variables of it's own, nothing major)
最简单的是,如果我可以super := secondInstance
在 oneInstance 上分配一点,然后再改回来:D
PS。本质上,我们通过让 secondInstance 重新分类 oneInstance,因为它是“超级”,它们现在是一个对象,其状态都假定 oneInstance 是从 Object 继承而来的,没有其他状态,但它是自己的。大多数情况下,使用继承链的默认方法查找对我有利。我能找到的最接近的是对象切片https://en.wikipedia.org/wiki/Object_slicing
另一种看待它的方式是:
secondInstance 正在接收消息,它是 OtherClass 的一个实例,一切正常。它接收到的一些消息不在 OtherClass 中,因此方法查找沿着继承链向上到达 SomethingClass,然后到达 Object、ProtoObject 等,最后它们应该被转发到另一个实例。这个过程应该是完全透明的。