Lua本身是不能像C++那样直接实现继承,我们可以用万能的table表来实现。废话不多说,直接上代码:
父类 People.lua
People = {}
People.name = "人"
People.age = 18 --默认18岁
function People:Speak(str)
print(self.name .. "("..self.age.."岁):" .. str)
end
function People:new(obj) --只针对People写的new方法
obj = obj or {}
return setmetatable(obj, {__index = self})
end
function new(obj) --公共继承方法(与上面的方法都可以单独实现)
local temp = {}
return setmetatable(temp, {__index = obj})
end
子类 Student.lua
require("People")
student01 = People:new()
student01.name = "小王"
student01.age = 19
student01:Speak("我爱吃鸡蛋")
student02 = People:new()
student02.name = "小张"
student02:Speak("我爱吃辣条")
student03 = People:new()
student03:Speak("我是谁?")
student04 = new(People)
student04:Speak("我是谁?")
结果如下: