local function search(k,plist) --获取父类中的值
for i=1 ,#plist do
local v = plist[i][k]
if v then return v end
end
end
function createClass(...) --创建继承关系
local c = {} --新类
local parents= {...} --父类列表
--在父类中查找缺失的方法
setmetatable(c,{__index = function(t,k)
t[k] = search(k,parents)
return t[k]
end})
--将 c 设置成其实力的元表
c.__index = c
function c:new(o)
o = o or {}
setmetatable(o,c)
return o
end
return c
end
local Account = {}
function Account:setRecord(tb)
self.record = tb
end
function Account:getRecordByIndex(index)
return self.record and self.record[index] or nil
end
Named = {}
function Named:getname()
return self.name
end
function Named:setname(name)
self.name = name
return self.name
end
local NamedAccount = createClass(Account,Named)
local na = NamedAccount:new{name = "默认账号1"}
print(na:getname())
print(na:setname("111"))
print(na:setname("11122"))
na:setRecord({"第一次","二次"})
print(na:getRecordByIndex(2))

本文介绍了一个使用Lua实现的简单面向对象编程示例,包括类的创建、继承及实例化过程。通过具体的代码展示了如何定义基类和派生类,并实现属性与方法的继承。
3964

被折叠的 条评论
为什么被折叠?



