Rosetta example: Inheritance/Multiple
Write two classes (or interfaces) Camera and MobilePhone, then write a class CameraPhone which is both a Camera and a MobilePhone.
package req nx
NX offers class-based and mixin-based multiple inheritance. The search order of features (methods, properties) along the class hierarchy is computed using a scheme equivalent with C3 linearization.
a) Class-based multiple inheritance
nx::Class create Camera nx::Class create MobilePhone nx::Class create CameraPhone -superclasses {Camera MobilePhone}
Show the resulting class search order:
% CameraPhone info superclasses -closure ::Camera ::MobilePhone ::nx::Object % [CameraPhone new] info precedence ::CameraPhone ::Camera ::MobilePhone ::nx::Object
b) Mixin-based multiple inheritance
nx::Class create CameraPhone -mixins {Camera MobilePhone} % CameraPhone info mixins ::Camera ::MobilePhone
Show the resulting class search order:
% [CameraPhone new] info precedence ::Camera ::MobilePhone ::CameraPhone ::nx::Object