Node:Inheritance of Dynamic Behavior, Previous:Dynamic Methods, Up:Obj Hierarchies



Inheritance of Dynamic Behavior

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