• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Lua实现面向对象

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Lua本身没有面向对象,但是可以通过function和表来模拟面向对象的过程;

表table

Lua中没有类的概念,可以用table模拟类的用法;

table存放的键值对,可当做class中的字段和方法,都可以存进表中;

首先创建公共方法:复制表中所有的键值对;

function clone(tab)
	local ins = {}
	for key,var in pairs(tab)do
		ins[key] = var
	end
	return ins
end

function copy(dist,tab)
	for k,v in pairs(tab)do
		dist[k] = v
	end
end

实例化对象

可以模拟类的构造函数,写一个new方法;

People是一个类,p为People的对象;

People = {name = ""}

function People.new(name)
	local self = clone(People)
	self.name = name
	return self
end

People.walk = function(self)
	print(self.name.."is walking slowly!")
end

--创建对象
local p = People.new("little Perilla")
p:walk()

继承

创建一个新的表,重写new构造方法,同时拷贝父类中所有的键值对;

--继承
Man = {}
Man.new = function(name)
	local self = People.new(name)
	copy(self,Man)
	return self
end

重写方法

直接暴力重写,同名即可;

--重写方法
Man.walk = function(self)
	print(self.name.." is walking!")
end

--创建对象
local m = Man.new("little Perilla")
m:walk()
--冒号调用函数默认第一个参数为自身

最终打印结果如下:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
lua调用参数报错(auserdatavalue)发布时间:2022-07-22
下一篇:
lua学习笔记发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap