通过Lua强大的metatable来实现继承,主要代码如下:
__index元方法:用于查看表中元素或方法是否存在,如果不存在返回nil,如果存在,则返回__index表中的结果
BaseClass = {}
BaseClass.__index = BaseClass
function BaseClass:MyShow( key )
if key == "key2" then
return "BaseClass key2 is nil"
else
return BaseClass[key]
end
end
require"BaseClass"
ChildClass = setmetatable({},BaseClass)
ChildClass.tempTable = {key1 = "lua", key3 = "java"}
function ChildClass:ShowAllKey( key )
if self == nil then
print("self is nil")
end
if key == "key1" then
return ChildClass.tempTable[key]
elseif key == "key2" then
return ChildClass:MyShow(key)
else
return ChildClass.tempTable[key]
end
end
print("=================================")
print(ChildClass.ShowAllKey(self,"key1"))
print("=================================")
print(ChildClass.ShowAllKey(self,"key2"))
print("=================================")
print(ChildClass.ShowAllKey(self,"key3"))
print("=================================")
注意:代码是在Sublime Text3上编译
运行结果