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