Node:Inheritance of Dynamic Behavior, Previous:Dynamic Methods, Up:Obj Hierarchies
When an object is created, it will inherit from its parents their
dynamic behavior. Methods that are declared dynamic in a parent,
will be copied into the object, and its dynamic behavior preserved.
a:: { super(object) & dynamic p/1 & p(1) & p(2) } b :: { super(a) } | ?- b::p(X). X = 1 ? ; X = 2 ? ; no | ?- b::asserta(p(3)). yes | ?- b::p(X). X = 3 ? ; X = 1 ? ; X = 2 ? ; no
Notice that by redeclaring a method to be dynamic in a sub-object,
amounts to redefining the method, and overriding of the parent definition
will take effect.
c :: { super(a) & dynamic p/1 } | ?- c::p(X). no