lua 父子类实现 ,__index
缺点:子类无法调用父类被子类覆盖的方法。
-- parent class
Parent = {
a,
b,
}
Parent.__index = Parent
function Parent.new(a,b)
local output = {}
setmetatable(output,Parent)
output.a = a
output.b = b
return output
end
function Parent:TestB()
warn("TestB:" .. self.b)
end
-- child class
Child = {
c
}
-- Child target 找不到去 Parent找
setmetatable(Child,{__index = Parent})
function Child.new(a,b,c)
local output = Parent.new(a,b)
-- output 只有a,b参数,暂时
target
找不到去 Parent找
setmetatable(output, {__index = Child})
-- output 只有a,b参数,
target
找不到去 Child找
output.c = c
return output
end
function Child:TestA()
warn("TestA:" .. self.a)
end
function Child:TestC()
warn("TestC:" .. self.c)
end
-- test
local f1 = Child.new(1,2,3)
local f2 = Child.new(4,5,6)
f1:TestA()
f1:TestB()
f1:TestC()
f2:TestA()
f2:TestB()
f2:TestC()