实现继承的原理:利用table中的元表来实现 __index
__index元方法:用于查看表中元素或方法是否存在 如果不存在则返回nil 如果存在 则返回__idnex表中的结果
--单一继承的实现 利用元表来实现继承
Account = {name = "lili", balance = 10}
function Account:widthdraw(value)
self.balance = self.balance + value
end
function Account:new(o)
o = o or {}
setmetatable(o, self)
self. __index = self
return o
end
local rto = Account:new()
rto:widthdraw(1000)
print("father area")
print("balance = " .. rto.balance)
print("name = " .. rto.name)
--子类继承父类
childAccount = Account:new({height = 200})
--子类重写父类方法
function childAccount:widthdraw(value)
print("I am child ")
self.balance = self.balance - value
end
local cto = childAccount:new()
cto:widthdraw(1)
print("-----------------")
print("child area")
print("balance = " .. cto.balance)
print("name = " .. cto.name)
print("height = " .