Lua Objektorientierung

From Ghoulwiki
Jump to: navigation, search
-- creates a new class, optionally derived from a parentclass
function CreateClass(parentclass_or_nil) 
	local p = parentclass_or_nil and setmetatable({},parentclass_or_nil._class_metatable) or {}
	p.New = CreateClassInstance
	p._class_metatable = { __index=p } 
	p._parent_class = parentclass_or_nil
	return p 
end


-- creates a class instance and calls the Init function if it exists with the given parameter ...
function CreateClassInstance(class, ...) 
	local o = setmetatable({},class._class_metatable)
	if o.Init then o:Init(...) end
	return o
end


cObjBase = CreateClass()

-- konstruktor
function cObjBase:Init (a)
	self.x = 5+a
end

function cObjBase:MyMethod ()
	print("MyMethod:",self.x)
end


local o = cObjBase:New(3)
o:MyMethod() -- ausgabe : MyMethod:       8