Modules ======= A module is in the same time a class, a namespace and a static module. The module determines the type of a variable. Each variable is associated with a module (built-in or created by a Plezuro developer). Therefore the module determines the action in a method or operator calling. =========== Constructor =========== Always after an object creation the constructor is called. Its name is 'init'. =========== Inheritance =========== A module can inherit from multiple other modules. The relation of the inheritance is transitive not equal. It means a module cannot inherit from itself and an ancestor of a module cannot be in the same time its offspring. The inheritance includes methods and operators (neither static fields nor static methods). It is possible to override what is inherited. When a module does not inherit explicitly, it inherits from the Module.BasicModule which is ancestor of all the modules. ========================= Static fields and methods ========================= Static fields and methods are associated with exactly one module. They are not inherited. =========== Duck typing =========== Everywhere is duck typing. It means it is possible to call a method with given name from an object if such a method exists in its module (directly or inherited). Moreover objects can be passed as the zero argument to methods from totally different modules.