码迷,mamicode.com
首页 > 其他好文 > 详细

lua中使用table实现类和继承

时间:2019-02-01 14:16:50      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:key   object   ==   oca   ret   turn   color   读写   new   

--因为只有当读写不存在的域时,才会触发__index和__newindex
classA = {className = "classA",name="classAInst"}
function classA:new(newobject)
    newobject = newobject or {}
    setmetatable(newobject, {__index = self})--当在newobject找不到key对应的value时,就到self(即classA)类中查找
    return newobject
end
function inherit(p)
    local newclass = {className = "classB",parent = p}
    setmetatable(newclass,{__index=p})--当在newclass中找不到key对应的value时,就到p类中查找 
    function newclass:new(newobject)
        newobject = newobject or {}
        setmetatable(newobject,{__index = newclass})--当在newobject找不到key对应的value时,就到newclass类中查找 
        return newobject 
    end
    return newclass
end
testA = classA:new()
print("testA ==> ",testA.className)
print("testA ==> ",testA.name)

testB = inherit(classA):new({name = "testB"})
print("testB ==> ",testB.className)
print("testB ==> ",testB.name)

testC = inherit(classA):new()
print("testC ==> ",testC.className)
print("testC ==> ",testC.name)

testD = inherit(testB):new()
print("testD ==> ",testD.className)
print("testD ==> ",testD.name)

testA ==> classA
testA ==> classAInst
testB ==> classB
testB ==> testB
testC ==> classB
testC ==> classAInst
testD ==> classB
testD ==> testB

lua中使用table实现类和继承

标签:key   object   ==   oca   ret   turn   color   读写   new   

原文地址:https://www.cnblogs.com/mttnor/p/10345513.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!