lua语言实现面向对象编程

lua是一个非常轻巧的脚本语言。这里通过几个步骤,说明lua如何实现类的功能。

1、通过clone函数复制表

function clone( tab_ )
	local tab = {}
	for k,v in pairs(tab) do
		tab[k] = v
	end
	return tab
end

2、定义类的成员函数new,用于实例化对象

Myclass = {}
Myclass.new = function (  )
	local self = clone(Myclass)
	return self
end


3、继承

通过复制表的方式,实现继承

function copy(dist,tab) --把tab表里的数据复制给dist
	for k,v in pairs(tab) do
		dist[k] = v
	end
end

base = {} --基类
base.new = function (  )
	local self = clone(Myclass)
	return self
end

inheritance = {} --继承自base类
inheritance = function()
	local self = base.new()
	copy(self,inheritance)
	return self
end

4、函数重写

函数重写非常简单,直接赋值给子类一个新的函数就行

inheritance.fun = function ( ... )
	-- body
end

5、私有成员

通过函数闭包的方法,可以实现类的成员私有化

function People( name )
	local self = {}
	local function init() --闭包实现私有成员函数
		self.name = name
	end

	self.sayHi = function()
		print("Hi "..self.name)
	end

	init() --相当于构造函数
	return self
end

function Man(name) --继承自People的类
	local self = {}

	local function init()
		self = People(name)
	end

	self.sayHello = function()
		print("Hello "..self.name)
	end

	init()

	return self
end

local m = Man("QJ")
m:sayHello() --"Hello QJ"
m:sayHi() --"Hi QJ" 继承基类的方法

6、总结

lua可以通过复制表和闭包的方法来实现类的特性,使用复制表效率更高,使用闭包给符合使用习惯。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值