Lua继承(使用table实现)

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("我是谁?")

结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值